【问题标题】:WPF - change global font size at runtimeWPF - 在运行时更改全局字体大小
【发布时间】:2010-12-28 21:44:13
【问题描述】:

我需要在我的简单应用程序中添加一项功能 - 以允许用户更改整个应用程序的字体大小。做起来容易吗?你能告诉我如何开始吗? 它只需要 3 种预定义的字体大小,但我想到的第一个也是唯一的解决方案是创建 3 个不同的主题。有没有可能让它变得更简单?

【问题讨论】:

标签: wpf xaml wpf-controls


【解决方案1】:

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

<Window FontSize="10" ...>

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

this.FontSize = 20;

在窗口的代码隐藏中将即时更改所有未指定的字体大小。这也适用于似乎不支持字体大小的东西:

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

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

【讨论】:

  • 与我见过的其他解决方案相比,这是一个非常简单的解决方案。感谢您的帮助!
【解决方案2】:
Application.Current.MainWindow.FontSize = 12;

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 2015-04-25
      相关资源
      最近更新 更多