我需要在我的简单应用程序中添加一个功能 - 允许用户更改整个应用程序的字体大小。这很容易吗?你能给我一些提示如何开始吗? 它只需要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}" />
但是,您需要记住将其添加到所有您的文字中。
更好的解决方案是绑定您使用的样式的大小,但同样必须对所有文本进行样式设置。如果您使用隐式样式,那么您不必记住添加对文本的引用,但所有文本都必须看起来相同。这是否有问题将取决于您的申请。