WPF - 在运行时更改全局字体大小

时间:2010-12-28 21:44:13

标签: wpf xaml wpf-controls

我需要在我的简单应用程序中添加一个功能 - 允许用户更改整个应用程序的字体大小。这很容易吗?你能给我一些提示如何开始吗? 它只需要3个预定义的字体大小,但我想到的第一个也是唯一的解决方案是创建3个不同的主题。是否可以简化它?

3 个答案:

答案 0 :(得分:13)

幸运的是,FontSize使用了Property Value Inheritance。这意味着只要不覆盖它,FontSize将自动传播到所有子文本元素。因此,您可以设置一个:

<Window FontSize="10" ...>

它将适用于该窗口中没有字体大小的所有文本元素。在代码中更改它也很简单:

this.FontSize = 20;
在窗口的代码隐藏中的

将动态更改所有未指定的字体大小。这也适用于似乎不支持字体大小的内容:

<Grid TextElement.FontSize="15" ...>

您提到的其他文字属性也是如此。

答案 1 :(得分:3)

Application.Current.MainWindow.FontSize = 12;

答案 2 :(得分:0)

在最基本的级别,您需要将TextBlocks等的FontSize属性绑定到一个变量,然后您可以将该变量更改为三个预定义值之一:

<TextBlock FontFamily="Arial" Text="Sample text" FontSize="{Binding TextSize}" />

但是,您需要记住将其添加到所有您的文字中。

更好的解决方案是绑定您使用的样式的大小,但同样必须对所有文本进行样式设置。如果您使用隐式样式,那么您不必记住添加对文本的引用,但所有文本都必须看起来相同。这是否有问题将取决于您的申请。