我需要改变整个应用程序的所有文本的字体大小。
我试过按以下方式做,但没有用:-
<Style x:Key="fontsize" TargetType="{x:Type FrameworkElement}">
<Setter Property="Control.FontSize" Value="20"/>
</Style>
<Style TargetType="{x:Type FrameworkElement}" BasedOn="{StaticResource fontsize}"/>
当我尝试如下设置时,它可以正常工作,但不能应用于所有元素&; 需要将其应用于所有不同类型的元素。
<Style TargetType="TextBlock" BasedOn="{StaticResource fontsize}"/>
<Style TargetType="TextBox" BasedOn="{StaticResource fontsize}"/>
<Style TargetType="DataGridCell" BasedOn="{StaticResource fontsize}"/>
<Style TargetType="MenuItem" BasedOn="{StaticResource fontsize}"/>
<Style TargetType="DatePicker" BasedOn="{StaticResource fontsize}"/>
我还想问一下,有没有一种方法可以覆盖特定元素的全局样式,比如用户控件上的标题文本应该有不同的大小?
在app.xaml中
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="20"/>
<Setter Property="FontWeight" Value="Bold"/>
</Style>
在app.xaml中为窗口创建全局样式。
<Application.Resources>
<Style x:Key="WindowStyle" TargetType="{x:Type Window}">
<Setter Property="FontStyle" Value="Italic" />
<Setter Property="FontSize" Value="24" />
<Setter Property="Foreground" Value="Green"/>
</Style>
</Application.Resources>
并为所需窗口设置该样式。
<Window x:Class="YourNamespace.MainWindow" Style="{StaticResource WindowStyle}".....>
用于重写usercontrol的样式
<local:UserControl1>
<local:UserControl1.Style>
<Style TargetType="UserControl">
<Setter Property="FontSize" Value="10"/>
</Style>
</local:UserControl1.Style>
</local:UserControl1>
这涉及到两个控制。 你可能在想“嘿,这个单元格或者那个日历怎么样”。 它们的模板在TextBlock中显示文本。 当您在menuitem上设置Header或在label上设置content时,将生成一个textblock。
因此,您“只”需要在textblock和TextBox上设置样式:
<Application.Resources>
<ResourceDictionary>
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="20"/>
</Style>
<Style TargetType="TextBox">
<Setter Property="FontSize" Value="20"/>
</Style>
</ResourceDictionary>
</Application.Resources>
</Application>
话虽如此。
就像克莱门斯指出的那样。
字体大小和样式依赖属性被标记为继承,因此如果您只有mainwindow,那么您可以在上面设置。
当您设置内容时,标签中包含一个textblock,这并不是“显而易见”的。 类似地,menuitem和Header。 因此,我认为值得张贴这个答案。