我试图在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编写的代码是在类后面的代码的构造函数中编写的。
答案 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);