WPF如何在列表框失去焦点时更改列表框所选项目文本颜色

时间:2010-06-24 16:10:15

标签: wpf listbox styles selecteditem

我一直在搜索如何更改失去焦点的列表框中所选项目的文本颜色。

  <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中找到了这个列表,从这个列表中提供了大量可能的选项,任何看起来很直观的东西都没有用。有人知道我需要改变的关键吗?

2 个答案:

答案 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);
祝你好运。