Dela via


Så här använder du systemresurser (WPF .NET)

Det här exemplet visar hur du använder systemdefinierade resurser. Systemresurser tillhandahålls av WPF och ger åtkomst till operativsystemresurser, till exempel teckensnitt, färger och ikoner. Systemresurser exponerar flera systemdefinierade värden som både resurser och egenskaper som hjälper dig att skapa visuella objekt som är konsekventa med Windows.

Teckensnitt

Använd klassen SystemFonts för att referera till de teckensnitt som används av operativsystemet. Den här klassen innehåller systemteckensnittsvärden som statiska egenskaper och egenskaper som refererar till resursnycklar som kan användas för att komma åt dessa värden dynamiskt vid körning. CaptionFontFamily är till exempel ett SystemFonts värde och CaptionFontFamilyKey är en motsvarande resursnyckel.

I följande exempel visas hur du får åtkomst till och använder egenskaperna för SystemFonts som statiska värden för att formatera eller anpassa ett textblock:

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

Om du vill använda värdena för SystemFonts i kod behöver du inte använda något statiskt värde eller en dynamisk resursreferens. Använd i stället icke-nyckelegenskaperna för klassen SystemFonts. Även om icke-nyckelegenskaperna uppenbarligen definieras som statiska egenskaper, kommer WPF:s beteende under körningstid, som hanteras av systemet, att utvärdera egenskaperna i realtid och ta korrekt hänsyn till användardrivna ändringar av systemvärden. I följande exempel visas hur du anger teckensnittsinställningarna för en knapp:

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)

Dynamiska teckensnitt i XAML

Systemteckensnittsmått kan användas som antingen statiska eller dynamiska resurser. Använd en dynamisk resurs om du vill att teckensnittsmåttet ska uppdateras automatiskt medan programmet körs. annars använder du en statisk resurs.

Anteckning

Dynamiska resurser har nyckelordet Key tillagt till egenskapsnamnet.

I följande exempel visas hur du kommer åt och använder dynamiska systemteckensnittsresurser för att formatera eller anpassa ett textblock:

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

Parametrar

Använd klassen SystemParameters för att referera till egenskaper på systemnivå, till exempel storleken på den primära bildskärmen. Den här klassen innehåller både egenskaper för systemparametervärden och resursnycklar som binder till värdena. FullPrimaryScreenHeight är till exempel ett SystemParameters egenskapsvärde och FullPrimaryScreenHeightKey är motsvarande resursnyckel.

I följande exempel visas hur du kommer åt och använder statiska värden för SystemParameters för att formatera eller anpassa en knapp. Det här markup-exemplet storleksanpassar en knapp genom att använda SystemParameters-värden för en knapp.

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

Om du vill använda värdena för SystemParameters i kod behöver du inte använda vare sig statiska referenser eller dynamiska resursreferenser. Använd i stället värdena för klassen SystemParameters. Även om icke-nyckelegenskaperna uppenbarligen definieras som statiska egenskaper, utvärderar körningsbeteendet för WPF som hanteras av systemet egenskaperna i realtid och tar korrekt hänsyn till användardrivna ändringar av systemvärden. I följande exempel visas hur du anger en knapps bredd och höjd med hjälp av SystemParameters värden:

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)

Dynamiska parametrar i XAML

Mått för systemparameter kan användas som antingen statiska eller dynamiska resurser. Använd en dynamisk resurs om du vill att parametermåttet ska uppdateras automatiskt medan programmet körs. annars använder du en statisk resurs.

Anteckning

Dynamiska resurser får nyckelordet Key tillagt i egenskapsnamnet.

I följande exempel visas hur du kommer åt och använder dynamiska systemparameterresurser för att formatera eller anpassa en knapp. I det här XAML-exemplet storleksanpassas en knapp genom att SystemParameters värden tilldelas knappens bredd och höjd.

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

Se även