如何使用系统资源 (WPF .NET)

此示例演示如何使用系统定义的资源。 系统资源由 WPF 提供,并允许访问操作系统资源,例如字体、颜色和图标。 系统资源将系统确定的许多值以资源和属性的形式公开,以帮助创建与 Windows 一致的视觉效果。

重要

面向 .NET 7 和 .NET 6 的桌面指南文档正在撰写中。

字体

使用 SystemFonts 类引用操作系统使用的字体。 此类既包含作为静态属性的系统字体值,又包含引用可用于在运行时动态访问这些值的资源键的属性。 例如,CaptionFontFamily 是一个 SystemFonts 值,而 CaptionFontFamilyKey 是相应的资源键。

以下示例演示如何访问并使用 SystemFonts 的属性作为静态值来设置按钮样式或自定义文本块:

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

若要在代码中使用 SystemFonts 的值,不必使用静态值或动态资源引用。 而是可以使用 SystemFonts 类的非键属性。 尽管非键属性已明确定义为静态属性,但是系统托管的 WPF 的运行时行为将会实时重新评估这些属性,并且会适当考虑对系统值进行用户驱动的更改。 以下示例演示如何指定按钮的字体设置:

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)

XAML 中的动态字体

系统字体规格可用作静态或动态资源。 如果希望字体规格在应用程序运行时自动更新,请使用动态资源;否则,请使用静态资源。

注意

动态资源的属性名称后面附有关键字 Key

以下示例演示如何访问和使用系统字体动态资源来设计按钮样式或自定义文本块:

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

参数

使用 SystemParameters 类引用系统级属性,例如主显示器的大小。 此类包含系统参数值属性和绑定到值的资源键。 例如,FullPrimaryScreenHeight 是一个 SystemParameters 属性值,而 FullPrimaryScreenHeightKey 是相应的资源键。

以下示例演示如何访问并使用 SystemParameters 的静态值来设置按钮样式或自定义按钮。 此标记示例通过将 SystemParameters 值应用于按钮来调整按钮大小:

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

要在代码中使用 SystemParameters 的值,不必使用静态引用或动态资源引用。 可改为使用 SystemParameters 类的值。 尽管非键属性已明确定义为静态属性,但是系统托管的 WPF 的运行时行为将会实时重新评估这些属性,并且会适当考虑对系统值进行用户驱动的更改。 以下示例演示如何使用 SystemParameters 值设置按钮的宽度和高度:

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)

XAML 中的动态参数

系统参数规格可用作静态或动态资源。 如果希望参数规格在应用程序运行时自动更新,请使用动态资源;否则,请使用静态资源。

注意

动态资源的属性名称后面附有关键字 Key

以下示例演示如何访问和使用系统参数动态资源来设计按钮样式或自定义按钮。 此 XAML 示例通过将 SystemParameters 值分配给按钮的宽度和高度来调整按钮大小。

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

另请参阅