按钮和菜单项前景颜色被Textblock样式覆盖

3

这是我应用于项目中所有文本块的样式,该样式位于App.XAML文件中。

  <Style TargetType="{x:Type TextBlock}">
        <Setter Property="Foreground" Value="Orange" />
        <Setter Property="VerticalAlignment" Value="Center"/>
        <Setter Property="HorizontalAlignment" Value="Left"/>
    </Style>

但是这种样式会改变项目中所有菜单项和按钮的前景颜色,即使我将这些控件的前景颜色指定为黑色。有解决这个问题的方法吗?
按钮的XAML如下:
<Button x:Name="BtnEdit" Content="Details" Click="BtnEdit_Click" Margin="10,0,0,0"  />   

你能展示一个典型菜单和/或按钮的XAML吗? - ChrisF
将按钮的前景指定为TextElement.Foreground,而不仅仅是Foreground。这不是一个确切的答案,因为它只是一种猜测,并且可能并不是最佳解决方案。 - Kent Boogaart
1
是的,这很奇怪,因为在设计师中它显示正确(按钮黑色文本)- 但当应用程序运行时,按钮文本变成了橙色。 - Ricibob
1个回答

1
将你的样式从 App.xaml 的 App.Resources 移动到 MainWindow.xaml 的 Window.Resources 中。
如果你需要在多个窗口或页面中使用你的样式,那么请按照这篇文章的说明将它移动到一个单独的资源字典 xaml 文件中(添加 -> 新建 -> wfp -> 资源字典):
资源字典
将该字典合并到 Window.Resources 中,而不是 Application.Resources 中,就像例子中一样!例如:
<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
             <ResourceDictionary Source="Dictionary1.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

那么,我必须在每个页面中重复相同的代码,对吗? - sony
我更新了我的答案,使用了一个单独的资源字典文件 - 我测试过了,它可以工作。如果不清楚如何设置,请告诉我。 - Ricibob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接