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à che consentono di creare oggetti visivi coerenti con Windows.

Importante

La documentazione di Desktop Guide per .NET 7 e .NET 6 è in fase di costruzione.

Tipi di carattere

Utilizzare la SystemFonts classe per fare riferimento ai tipi di carattere utilizzati dal sistema operativo. Questa classe contiene valori dei tipi di carattere di sistema come proprietà statiche e proprietà che fanno riferimento alle 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 proprietà di SystemFonts come valori statici per applicare uno stile o personalizzare 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 di 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 di runtime di WPF ospitato dal sistema rivaluta le proprietà in tempo reale e tiene conto correttamente delle modifiche guidate dall'utente ai valori di sistema. Nell'esempio seguente viene illustrato come specificare le impostazioni del tipo di 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. Usa una risorsa dinamica se vuoi che la metrica del tipo di carattere venga aggiornata automaticamente durante l'esecuzione dell'applicazione; in caso contrario, usare una risorsa statica.

Nota

Le risorse dinamiche hanno la parola chiave Key aggiunta al nome della proprietà.

L'esempio seguente illustra come accedere e usare le risorse dinamiche del tipo di carattere di sistema per applicare uno stile o personalizzare 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à del valore del parametro di sistema che le chiavi di risorsa che si associano ai valori. Ad esempio, FullPrimaryScreenHeight è un SystemParameters valore della proprietà ed FullPrimaryScreenHeightKey è la chiave di risorsa corrispondente.

Nell'esempio seguente viene illustrato come accedere e usare i valori statici di SystemParameters per applicare uno stile o personalizzare un pulsante. Questo esempio di markup ridimensiona un pulsante applicando SystemParameters i valori 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 di runtime di WPF ospitato dal sistema rivaluta le proprietà in tempo reale e tiene conto correttamente delle modifiche guidate dall'utente ai valori di sistema. Nell'esempio seguente viene illustrato come impostare la larghezza e l'altezza di un pulsante usando SystemParameters i 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 del parametro venga aggiornata automaticamente durante l'esecuzione dell'applicazione; in caso contrario, usare una risorsa statica.

Nota

Le risorse dinamiche hanno la parola chiave Key aggiunta 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 SystemParameters valori 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