【问题标题】:Button and Menuitem foreground colors overridden by the Textblock style被 Textblock 样式覆盖的按钮和 Menuitem 前景色
【发布时间】:2011-11-02 11:06:04
【问题描述】:

这是我应用于 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。
  • 将按钮的前景指定为TextElement.Foreground 而不仅仅是Foreground。不包括这个作为答案,因为这是一种预感,而且它可能不是最好的解决方案。
  • 是的,它很奇怪,因为它在设计器中正确显示(按钮黑色文本) - 但是当应用程序运行时,按钮文本是橙色的。

标签: wpf xaml styles


【解决方案1】:

将您的样式从 App.xaml App.Resources 移动到 MainWindow.xaml Window.Resources。
如果您需要在多个窗口或页面中使用您的样式,请按照本文将其移动到单独的资源字典 xaml 文件(添加 -> 新建 -> wfp -> 资源字典):
resource dictionarys
将字典合并到 Window.Resources 而不是 Application.Resources 中,如示例!例如

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
             <ResourceDictionary Source="Dictionary1.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

【讨论】:

  • 在这种情况下,我必须在每个页面仪式中重复相同的代码?
  • 我已更新我的答案以使用单独的资源字典文件 - 我对此进行了测试并且它有效。如果不清楚如何设置,请告诉我。
猜你喜欢
  • 2011-05-28
  • 1970-01-01
  • 2012-10-06
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-15
  • 2020-10-23
相关资源
最近更新 更多