在ComboBox中覆盖默认的TextBlock样式

我有一个在App.xaml中定义的默认TextBlock样式,它似乎也会影响ComboBox项目的文本颜色。 现在,如何显式设置主窗口中定义的ComboBox的文本颜色? (我想保留默认样式,但是将combobox文本颜色设为蓝色而不是红色……)

App.xaml中

      

MainWindow.xaml

         

我尝试过的事情:

  1. 设置Combobox.Foreground
  2. 设置TextElement.Foreground
  3. 设置TextBlock.Foreground
  4. 在ComboBox.Resources中定义另一个隐式TextBlock样式
  5. 在Grid.Resources中定义另一个隐式TextBlock样式
  6. 在Window.Resources中定义另一个隐式TextBlock样式

除非将它们放在Application.Resources ,否则大多数隐式TextBlock样式将停在控件边界

例如,将样式放在Window.Resources中将使其适用于所有对象,但不适用于其他控件模板(如ComboBoxButton文本

我建议将您的样式移动到Window.Resources ,然后为您的ComboBox项目设置样式以获得您想要的任何前景色。

    

如果你想将它保存在Application.Resources ,那么我怀疑你需要追踪x:Static刷键用于设置TextBlock.Text颜色并覆盖你的ComboBox.Resources颜色

您必须在ComboBoxItem上使用触发器

   

如果你想保持静态那么