设置全局字体系列[重复]

Posted

技术标签:

【中文标题】设置全局字体系列[重复]【英文标题】:Setting global font family [duplicate] 【发布时间】:2011-07-07 18:59:27 【问题描述】:

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

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

在我的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】:

我之前所做的是为控件创建一个样式,然后从中派生出其他控件样式。无论出于何种原因,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 派生,而 Control 派生自 Framework Element。

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

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

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

【讨论】:

以上是关于设置全局字体系列[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将全局字体应用于整个 HTML 文档

全局字体设置 老年模式

如何知道锚元素使用啥字体系列[重复]

下一个 js 和全局字体的问题

VS Code添加新字体HTML [重复]

R语言ggplot2可视化改变字体大小实战:单个图片设置字体大小全局设置字体大小