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 样式 TabControl TabItems 自定义前景色/背景色