设置全局字体系列

时间:2011-07-07 18:59:27

标签: wpf xaml

  

可能重复:
  How to set the default font for a wpf application?

来自网络开发背景我经常对如何为控件分配样式感到困惑。我想要做的是为整个应用程序设置一个全局字体系列。

在我的App.xaml文件中,我有以下

    <Style TargetType="{x:Type Window}">
        <Setter Property="FontFamily" Value="Helvetica, Arial" />
        <Setter Property="FontSize" Value="13" />
    </Style>

我已尝试将目标类型更改为Control,但这并没有做任何事情。我希望,因为一切都在技术上存在于Window控件中,所以一切都会按预期工作。

原来TextBlock控件不会从Control继承。我认为这是问题的主要原因,因为90%的文字都是TextBlock形式。

在CSS中我会做这样的事情:

body {
    font-family: Helvetica, Arial;
    font-size: 13px;
    }

1 个答案:

答案 0 :(得分:13)

我之前做的是创建一个Style for Control,然后从中派生出其他控件样式。无论出于何种原因,WPF不希望直接从Control样式中获取FontFamily设置,但如果它从基于Control的Button Style中获取,则它可以工作。如果我稍后会有一些时间,我会挖掘并找到之前的实现。

编辑:
不记得我在哪里放了一个现成的例子,所以我做了一个:

<Style x:Key="ControlStyle" TargetType="Control">
    <Setter Property="FontFamily" Value="Wingdings"/>
</Style>
<Style TargetType="Button" BasedOn="{StaticResource ControlStyle}"/>

另外,请记住,TextBlock的样式不能基于Control。 Textblock派生自Framework元素,而不是Control。标签,复选框,文本框等派生自Control,它派生自Framework Element。

您可能需要为Textblock设置单独的样式。您可以做的一件事是设置字体系列资源并将顶级样式绑定到该资源。然后,如果它改变了,你所要做的就是改变那个实例。

<FontFamily x:Key="DefaultFont" >Ravie</FontFamily>

<Setter Property="FontFamily" Value="{DynamicResource DefaultFont}"/>