根据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/