根据this的说法,重写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>

如果您在.NET 4.5中运行此程序,则可以看到它仅更改焦点对准的颜色,而不更改非焦点对准的颜色(在.NET 4.0中有效)。知道为什么吗?

编辑:这似乎是List/Combo Box Background And Selected Colours Under .net 4.5的重复项。

最佳答案

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

XAML

<ListBox.Resources>
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightBlue"/>
    <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey }" Color="Orange" />
</ListBox.Resources>

C#
listBox.Resources.Add(SystemColors.InactiveSelectionHighlightBrushKey,
                      new SolidColorBrush(Colors.Orange));

我希望这个对你有用。

关于wpf - 不在焦点上时覆盖ListBoxItem背景色(.NET 4.5),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12710296/

10-13 09:05