我一直在搜索如何更改失去焦点的列表框中所选项目的文本颜色。
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Orange"/>
这三个标签负责大部分工作,但我的列表框有黑色背景,当控件失去焦点时,字体变为黑色。
我从另一篇帖子SystemColor. Keys中找到了这个列表,从这个列表中提供了大量可能的选项,任何看起来很直观的东西都没有用。有人知道我需要改变的关键吗?
答案 0 :(得分:8)
我把它放在包含列表框的元素的资源字典中:
<Style TargetType="ListBoxItem">
<Style.Resources>
<!--SelectedItem with focus-->
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Blue"/>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="White"/>
<!--SelectedItem without focus-->
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Blue"/>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="White"/>
</Style.Resources>
</Style>
另请注意,在.Net 4.5中,您必须通过设置
来询问“旧”行为 FrameworkCompatibilityPreferences.
AreInactiveSelectionHighlightBrushKeysSupported = false;
在创建任何窗口之前,在程序的早期。
答案 1 :(得分:1)
使用以下代码,只需更改颜色,例如使用Colors.Black
listBox.Resources.Add(SystemColors.ControlBrushKey, new SolidColorBrush(Color.FromArgb(0xFF, 0x7F, 0xDB, 0x14)));
listBox.Resources.Add(SystemColors.ControlTextBrushKey, Brushes.White);
祝你好运。