Установите FontFamily и FontSize для приложения в App.xaml - PullRequest
10 голосов
/ 21 сентября 2009

Как я могу установить FontFamily и FontSize для приложения в App.xaml?

Ответы [ 2 ]

12 голосов
/ 21 сентября 2009

Я нашел сообщение в блоге Дэвида Падбери с 2008 года, в котором рассказывается, как его изменить из кода. По сути, вы переопределяете свойства метаданных, которые объединяют ваши изменения с существующими значениями.

TextElement.FontFamilyProperty.OverrideMetadata(
typeof(TextElement),
new FrameworkPropertyMetadata(
    new FontFamily("Comic Sans MS")));

TextBlock.FontFamilyProperty.OverrideMetadata(
typeof(TextBlock),
new FrameworkPropertyMetadata(
    new FontFamily("Comic Sans MS")));

Также есть сообщение на форуме MSDN , в котором объясняется, как сделать это в XAML двумя способами.

1) Сначала вы определяете «глобальный» стиль для Control класса

 <Style TargetType="{x:Type Control}">
   <Setter Property="FontFamily" Value="Constantia"/>
 </Style>

, а затем используйте свойство BasedOn, чтобы применить его к другим элементам управления.

<StackPanel   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
 <StackPanel.Resources>
  <Style TargetType="{x:Type Control}" x:Key="ControlStyle">
     <Setter Property="FontFamily" Value="Constantia"/>
   </Style>

  <Style TargetType="{x:Type Label}" x:Key="LabelStyle" BasedOn="{StaticResource ControlStyle}">
   <Setter Property="FontWeight" Value="Bold" />
  </Style>
        <Style TargetType="{x:Type Button}" x:Key="ButtonStyle" BasedOn="{StaticResource ControlStyle}">
         <Setter Property="Background" Value="Blue"/>
  </Style>
 </StackPanel.Resources>

 <Label Style="{StaticResource LabelStyle}">This is a Label</Label>
 <Button Style="{StaticResource ButtonStyle}">This is a Button</Button>
</StackPanel>

2) Вы можете установить системные шрифты:

<FontFamily x:Key="{x:Static SystemFonts.MenuFontFamilyKey}">./#Segoe UI</FontFamily>
<System:Double x:Key="{x:Static SystemFonts.MenuFontSizeKey}">11</System:Double>
<FontWeight x:Key="{x:Static SystemFonts.MenuFontWeightKey}">Normal</FontWeight>

Хотя я, вероятно, не рекомендовал бы это.

3 голосов
/ 05 февраля 2011
<Application.Resources>
     <Style x:Key="WindowStyle" TargetType="{x:Type Window}">
            <Setter Property="FontFamily" Value="PalatineLinoType" />
     </Style>
</Application.Resources>
...