WPF comboboxitem 前景色改变

Posted

技术标签:

【中文标题】WPF comboboxitem 前景色改变【英文标题】:WPF comboboxitem foreground color change 【发布时间】:2020-07-28 05:02:05 【问题描述】:

我正在尝试更改 wpf 中组合框的颜色,但由于某种原因它没有改变,我不知道为什么。 这些项目确实已加载,我可以告诉并验证,但我看不到它们不是白色或黑色,而是与组合框的背景相同的颜色,有点灰色。

这是我必须将组合框颜色前景更改为黑色,但不起作用。

<ComboBox Foreground="#FF000000" x:Name="cBox_nosave" Width="149.8192" Height="22" Canvas.Left="23.7296000000033" Canvas.Top="40.7904000000016">
    <ComboBox.ItemTemplate>
      <DataTemplate>
        <TextBlock Grid.Column="1" Margin="2, 1" Text="Binding Name" />
      </DataTemplate>
    </ComboBox.ItemTemplate>
    <ComboBox.ItemContainerStyle>
      <Style TargetType="x:Type ComboBoxItem">
        <Setter Property="Foreground" Value="Black" />
      </Style>
    </ComboBox.ItemContainerStyle>
  </ComboBox>

如何将前景色更改为黑色? 在 wpf .net 4.6.1 版中工作

【问题讨论】:

您是否在某处定义了一些ComboBox 样式? ComboBox 的默认前景是黑色。无需将其显式设置为黑色。 不,我不知道,但它在 cms 内,并且 cms 有深色主题 @TechnologyResearcher:尝试将Style 属性设置为x:Null 以应用默认Style 这似乎是原因。在控件上本地设置属性(如您所做的那样)将覆盖任何样式设置。所以造型可能不是原因。也许您的主题会遍历可视化树以显式修改每个控件的外观。您究竟是如何为您的应用程序设置主题的? 我找到了我的解决方案,但它真的很奇怪,所以显然当根据列表调用调用 itemssource 的集合时,它是黑色或灰色 【参考方案1】:

尝试在项目模板中设置TextBlock前景

<ComboBox Foreground="#FF000000" x:Name="cBox_nosave" Width="149.8192" Height="22" Canvas.Left="23.7296000000033" Canvas.Top="40.7904000000016">
    <ComboBox.ItemTemplate>
      <DataTemplate>
        <TextBlock Foreground="Black" Grid.Column="1" Margin="2, 1" Text="Binding Name" />
      </DataTemplate>
    </ComboBox.ItemTemplate>
    <ComboBox.ItemContainerStyle>
      <Style TargetType="x:Type ComboBoxItem">
        <Setter Property="Foreground" Value="Black" />
      </Style>
    </ComboBox.ItemContainerStyle>
  </ComboBox>

【讨论】:

以上是关于WPF comboboxitem 前景色改变的主要内容,如果未能解决你的问题,请参考以下文章

怎么改变WPF中DataGrid的行样式

WPF 样式 TabControl TabItems 自定义前景色/背景色

WPF Listbox Item:设置第一项的前景色

所选列表框项的前景色的 Wpf 样式资源

wpf中的listview如何改变GridViewColumn以及Title的水平对齐方式

UITableViewCell 选中时,也改变前景色