在WPF中动态设置字体大小

时间:2016-04-27 11:58:01

标签: c# wpf xaml styling

我试图在WPF中动态设置字体大小。这就是我到目前为止所做的。

的App.xaml

<Style TargetType="{x:Type FrameworkElement}" x:key="baseStyle"></Style>
<Style TargetType="{x:Type TextBlock}" BasedOn={StaticResource baseStyle}"/>

App.xaml.cs

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
         base.OnStartup(e);
         double fontSize = System.Drawing.SystemFonts.IconTitleFont.Size;
         Style style = new Style{ TargetType = typeof(FrameworkElement)};
         style.Setter.Add(new Setter(TextElement.FontSizeProperty, fontSize));
       Application.Current.Resources["baseStyle"] = style;  

    }
}

MainWindow.xaml

<TextBlock Text="This is Sparta!!!"/>

问题:

当OnStartup调用资源&#39; baseStyle&#39;不可用。因此,样式被指定为Null值,因为未应用样式。任何有想法以其他方式实现它的人。我们将不胜感激。

修改: 有一件事我想澄清一下。实际上,我在资源字典中编写了App.xaml和App.xaml.cs代码,并将其合并到App.xaml中。用OnStartup编写的代码是在类后面的代码的构造函数中编写的。

1 个答案:

答案 0 :(得分:1)

稍加修改您的代码即可。只需删除并添加基本样式

即可
Style style = new Style { TargetType = typeof(FrameworkElement) };
            style.Setters.Add(new Setter(TextElement.FontSizeProperty, fontSize));
            Application.Current.Resources.Remove("baseStyle");
            Application.Current.Resources.Add("baseStyle" , style);