在我的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的样式接管并使其成为蓝色。
似乎没有办法为按钮覆盖这个(不重写控制模板)。这是真的吗?还是我错过了什么?
1条答案
按热度按时间ecr0jaav1#
这是一篇关于你面临的问题的好文章https://ikriv.com/dev/wpf/TextStyle/TextBlockStyle
总结起来就是
隐式TextBlock样式将影响应用程序中的所有按钮和其他内容控件,将它们全部重写以包含显式内容定义是不切实际的。最好的方法是不使用隐式TextBlock样式,而是将具有所需属性的样式应用于顶级窗口。然后,文本块将以一种不那么引人注目的方式继承这些属性。