Come usare le risorse di sistema (WPF .NET)

Questo esempio illustra come usare le risorse definite dal sistema. Le risorse di sistema vengono fornite da WPF e consentono l'accesso alle risorse del sistema operativo, ad esempio tipi di carattere, colori e icone. Le risorse di sistema espongono diversi valori definiti dal sistema come risorse e proprietà per facilitare la creazione di oggetti visivi coerenti con Windows.

Importante

La documentazione della Guida desktop per .NET 6 e .NET 5 (incluso .NET Core 3.1) è in fase di costruzione.

Tipi di carattere

Utilizzare la classe SystemFonts per fare riferimento ai tipi di carattere usati dal sistema operativo. Questa classe contiene i valori dei tipi di carattere di sistema come proprietà statiche e le proprietà che fanno riferimento a chiavi di risorsa che possono essere usate per accedere a tali valori in modo dinamico in fase di esecuzione. Ad esempio, CaptionFontFamily è un SystemFonts valore e è CaptionFontFamilyKey una chiave di risorsa corrispondente.

Nell'esempio seguente viene illustrato come accedere e usare le SystemFonts proprietà di come valori statici per lo stile o la personalizzazione di un blocco di testo:

<TextBlock FontSize="{x:Static SystemFonts.SmallCaptionFontSize}"
           FontWeight="{x:Static SystemFonts.SmallCaptionFontWeight}"
           FontFamily="{x:Static SystemFonts.SmallCaptionFontFamily}"
           Text="Small Caption Font">
</TextBlock>

Per usare i valori di SystemFonts nel codice, non è necessario usare un valore statico o un riferimento a una risorsa dinamica. Usare invece le proprietà non chiave della SystemFonts classe . Anche se le proprietà non chiave sono apparentemente definite come proprietà statiche, il comportamento in fase di esecuzione di WPF ospitato dal sistema rivaluta le proprietà in tempo reale e accountrà correttamente le modifiche guidate dall'utente ai valori di sistema. L'esempio seguente illustra come specificare le impostazioni del carattere di un pulsante:

var myButton = new Button()
{
    Content = "SystemFonts",
    Background = SystemColors.ControlDarkDarkBrush,
    FontSize = SystemFonts.IconFontSize,
    FontWeight = SystemFonts.MessageFontWeight,
    FontFamily = SystemFonts.CaptionFontFamily
};

mainStackPanel.Children.Add(myButton);
Dim myButton = New Button() With
{
    .Content = "SystemFonts",
    .Background = SystemColors.ControlDarkDarkBrush,
    .FontSize = SystemFonts.IconFontSize,
    .FontWeight = SystemFonts.MessageFontWeight,
    .FontFamily = SystemFonts.CaptionFontFamily
}

mainStackPanel.Children.Add(myButton)

Tipi di carattere dinamici in XAML

Le metriche dei tipi di carattere del sistema possono essere usate come risorse statiche o dinamiche. Usare una risorsa dinamica se si vuole che la metrica del tipo di carattere venga aggiornato automaticamente durante l'esecuzione dell'applicazione. In caso contrario, usare una risorsa statica.

Nota

Alle risorse dinamiche viene aggiunta la Key parola chiave al nome della proprietà.

L'esempio seguente illustra come accedere e usare le risorse dinamiche del tipo di carattere di sistema per lo stile o la personalizzazione di un blocco di testo:

<TextBlock FontSize="{DynamicResource {x:Static SystemFonts.SmallCaptionFontSize}}"
           FontWeight="{DynamicResource {x:Static SystemFonts.SmallCaptionFontWeight}}"
           FontFamily="{DynamicResource {x:Static SystemFonts.SmallCaptionFontFamily}}"
           Text="Small Caption Font">
</TextBlock>

Parametri

Usare la SystemParameters classe per fare riferimento alle proprietà a livello di sistema, ad esempio le dimensioni della visualizzazione primaria. Questa classe contiene sia le proprietà dei valori dei parametri di sistema che le chiavi di risorsa associate ai valori. Ad esempio, FullPrimaryScreenHeight è un valore SystemParameters della proprietà e FullPrimaryScreenHeightKey è la chiave di risorsa corrispondente.

Nell'esempio seguente viene illustrato come accedere e usare i valori statici di per SystemParameters impostare lo stile o personalizzare un pulsante. Questo esempio di markup ridimensiona un pulsante applicando valori SystemParameters a un pulsante:

<Button FontSize="8" 
        Height="{x:Static SystemParameters.CaptionHeight}"
        Width="{x:Static SystemParameters.IconGridWidth}"
        Content="System Parameters">
</Button>

Per usare i valori di SystemParameters nel codice, non è necessario usare riferimenti statici o riferimenti a risorse dinamiche. Usare invece i valori della SystemParameters classe . Anche se le proprietà non chiave sono apparentemente definite come proprietà statiche, il comportamento in fase di esecuzione di WPF ospitato dal sistema rivaluta le proprietà in tempo reale e accountrà correttamente le modifiche guidate dall'utente ai valori di sistema. L'esempio seguente illustra come impostare la larghezza e l'altezza di un pulsante usando i SystemParameters valori :

var myButton = new Button()
{
    Content = "SystemParameters",
    FontSize = 8,
    Background = SystemColors.ControlDarkDarkBrush,
    Height = SystemParameters.CaptionHeight,
    Width = SystemParameters.CaptionWidth,
};

mainStackPanel.Children.Add(myButton);
Dim myButton = New Button() With
{
    .Content = "SystemParameters",
    .FontSize = 8,
    .Background = SystemColors.ControlDarkDarkBrush,
    .Height = SystemParameters.CaptionHeight,
    .Width = SystemParameters.CaptionWidth
}

mainStackPanel.Children.Add(myButton)

Parametri dinamici in XAML

Le metriche dei parametri di sistema possono essere usate come risorse statiche o dinamiche. Usare una risorsa dinamica se si vuole che la metrica dei parametri venga automaticamente aggiornato durante l'esecuzione dell'applicazione. In caso contrario, usare una risorsa statica.

Nota

Alle risorse dinamiche viene aggiunta la Key parola chiave al nome della proprietà.

L'esempio seguente illustra come accedere alle risorse dinamiche dei parametri di sistema e usarle per applicare uno stile a un pulsante o personalizzarlo. Questo esempio XAML ridimensiona un pulsante assegnando valori SystemParameters alla larghezza e all'altezza del pulsante.

<Button FontSize="8" 
        Height="{DynamicResource {x:Static SystemParameters.CaptionHeightKey}}"
        Width="{DynamicResource {x:Static SystemParameters.IconGridWidthKey}}"
        Content="System Parameters">
</Button>

Vedi anche