不在焦点时覆盖ListBoxItem背景颜色(.NET 4.5)

Dor*_*oby 11 wpf xaml .net-4.5

根据这一点,覆盖ControlBrushKey资源时应更改ListBox选定项目的背景颜色,如果它没有焦点.我创建了一个简单的例子来反驳这个:

 <StackPanel>
    <ListBox>
      <ListBox.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightBlue"/>
        <!--SelectedItem without focus but doesn't really work-->
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Orange" />
      </ListBox.Resources>
      <ListBoxItem>
        Item 1
      </ListBoxItem>
      <ListBoxItem>
        Item 2
      </ListBoxItem>
    </ListBox>
    <TextBox></TextBox>
  </StackPanel>
Run Code Online (Sandbox Code Playgroud)

如果在.NET 4.5中运行它,您可以看到它只会更改焦点对焦颜色,而不会更改非焦点颜色(它在.NET 4.0中有效).知道为什么吗?

编辑:这似乎是.net 4.5下列表/组合框背景和选定颜色的重复.

小智 16

尝试以下更改选定的ListBoxItem失去焦点时的背景颜色:

XAML

<ListBox.Resources>    
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightBlue"/> 
    <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey }" Color="Orange" />    
</ListBox.Resources>
Run Code Online (Sandbox Code Playgroud)

C#

listBox.Resources.Add(SystemColors.InactiveSelectionHighlightBrushKey, 
                      new SolidColorBrush(Colors.Orange));
Run Code Online (Sandbox Code Playgroud)

我希望这个对你有用.


H.B*_*.B. 1

这一切都与控件的默认模板有关,如果它们不像 .NET 4 中那样使用系统颜色,则根本不会改变任何内容。