我一直在寻找如何在失去焦点的列表框中更改所选项目的文本颜色。
<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这从这个列表中提供了大量可能的选项,而任何看起来很直观的东西都没有奏效。有人知道我需要改变的关键吗?
最佳答案
我把它放在一个包含列表框的元素的资源字典中:
<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;
在创建任何窗口之前的程序早期。
关于WPF如何在列表框失去焦点时更改列表框所选项目的文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3111763/