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

Mik*_*ine 5 wpf styles listbox 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"/>
Run Code Online (Sandbox Code Playgroud)

这三个标签负责大部分工作,但我的列表框有黑色背景,当控件失去焦点时,字体变为黑色.

我从另一篇文章SystemColor中找到了这个列表.从这个列表中提供大量可能选项的和任何看似远程直观的东西都没有用.有人知道我需要改变的关键吗?

Joh*_*lle 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>
Run Code Online (Sandbox Code Playgroud)

另请注意,在.Net 4.5中,您必须通过设置来询问"旧"行为

      FrameworkCompatibilityPreferences.
            AreInactiveSelectionHighlightBrushKeysSupported = false;
Run Code Online (Sandbox Code Playgroud)

在创建任何窗口之前,在程序的早期.


Seb*_*ull 1

使用以下代码并仅更改颜色,例如使用Colors.Black

listBox.Resources.Add(SystemColors.ControlBrushKey, new SolidColorBrush(Color.FromArgb(0xFF, 0x7F, 0xDB, 0x14)));
listBox.Resources.Add(SystemColors.ControlTextBrushKey, Brushes.White);
Run Code Online (Sandbox Code Playgroud)

祝你好运。