Использование системных ресурсов (WPF .NET)
В этом примере показано, как использовать системные ресурсы. Системные ресурсы предоставляются WPF и разрешают доступ к ресурсам операционной системы, таким как шрифты, цвета и значки. Системные ресурсы предоставляют несколько системных значений как ресурсов, так и свойств, которые помогают создавать визуальные элементы, совместимые с Windows.
Шрифты
Используйте класс 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>
См. также
.NET Desktop feedback