2010-06-24 72 views
5

我一直在寻找如何更改已失去焦点的列表框中选定项目的文本颜色。WPF如何在列表框丢失焦点时更改列表框中选定的项目文本颜色

<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发现了这个列表,这个列表提供了很多可能的选项,任何看起来远程直观的东西都没有奏效。有人知道我需要改变的关键吗?

回答

1

使用下面的代码,只是使用Colors.Black

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

好运气改变,例如颜色。

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; 

在任何窗口创建之前,在程序的早期阶段。

相关问题