XAML 在WPF中,有没有一种方法可以设置按钮的前景,当一个通用的文本块样式与前景存在?

ljo96ir5  于 2023-10-14  发布在  其他
关注(0)|答案(1)|浏览(110)

在我的App.xaml文件中,我定义了以下样式:

<Application.Resources>
    <Style TargetType="TextBlock">
        <Setter Property="Foreground" Value="Blue"/>
    </Style>
</Application.Resources>

此代码影响其他xaml文件中所有按钮的前景。
在一个像这样的地方

<StackPanel>
    <Button Foreground="Yellow" Content="I want to be yellow" Width="200" Height="100"/>
</StackPanel>

我希望按钮的文本在这里是黄色的,但是来自app.xaml的样式接管并使其成为蓝色。

似乎没有办法为按钮覆盖这个(不重写控制模板)。这是真的吗?还是我错过了什么?

ecr0jaav

ecr0jaav1#

这是一篇关于你面临的问题的好文章https://ikriv.com/dev/wpf/TextStyle/TextBlockStyle
总结起来就是
隐式TextBlock样式将影响应用程序中的所有按钮和其他内容控件,将它们全部重写以包含显式内容定义是不切实际的。最好的方法是不使用隐式TextBlock样式,而是将具有所需属性的样式应用于顶级窗口。然后,文本块将以一种不那么引人注目的方式继承这些属性。

相关问题