在WPF中使用App.xaml中的静态资源更改所有UI元素的字体大小

1sbrub3j  于 2023-06-07  发布在  其他
关注(0)|答案(3)|浏览(373)

我需要改变整个应用程序的所有文本的字体大小。
我试着做了以下几件事,但这并不奏效:

<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}"/>

我还想问,有没有一种方法,我可以覆盖全局样式为一个特定的元素,如标题文本应该是不同的大小对用户控制?

xqk2d5yq

xqk2d5yq1#

在App.xaml中

<Style TargetType="TextBlock">
            <Setter Property="FontSize" Value="20"/>
            <Setter Property="FontWeight" Value="Bold"/>
        </Style>
jdg4fx2g

jdg4fx2g2#

在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}".....>

用于重写用户控件的样式

<local:UserControl1>
                <local:UserControl1.Style>
                    <Style TargetType="UserControl">
                        <Setter Property="FontSize" Value="10"/>
                    </Style>
                </local:UserControl1.Style> 
            </local:UserControl1>
rjjhvcjd

rjjhvcjd3#

这涉及两个控件。你可能在想“嘿,这个手机或那个日历怎么样”。它们的模板在文本块中显示文本。当你在菜单项上设置标题或者在标签上设置内容时,你会得到一个生成的文本块。
因此,您“只”需要在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>

话虽如此。
”Clemons指出。
字体大小和样式依赖属性被标记为继承,所以如果你只有mainwindow,那么你可以只设置它。
当你设置内容的时候,一个标签最后会有一个文本块,这并不是“显而易见的”。类似的还有menuitem和header。因此,我认为值得发布这个答案。

相关问题