WPF ListBox Highlight в Windows 10
Я довольно новичок в WPF, но опыт работы в .NET (Winforms). Я пытаюсь манипулировать стилем подсветки списка, чтобы контролировать сфокусированный и несфокусированный цвет выбранного элемента. Каждый учебник по этому вопросу, который я нашел, использует собственный стиль, чтобы назначить новое значение для SystemColors.HighlightBrushKey и SystemColors.ControlBrushKey. Но это не работает. После бесчисленных часов попыток заставить это работать, мне пришло в голову, что, возможно, это связано с ОС. Я пробовал это в системе Windows 10. Я запустил точно такой же код на установке Windows 7, и вот, это сработало!
Таким образом, очевидно, что старый метод не работает в Windows 10 (по крайней мере, так он выглядит). Кто-нибудь нашел альтернативу? В конце дня я просто хочу, чтобы окно списка сохраняло яркую подсветку, даже когда оно не сфокусировано. Серая подсветка по умолчанию трудно увидеть, и в некоторых случаях она не подходит. У меня есть сценарий реального мира, где кажется очень неестественным, когда основной момент исчезает, когда фокус отходит от ListBox.
Ниже приведен код XAML, который я использовал, который работал в Windows 7, но не в Windows 10. (Кстати, я также пытался заменить SystemColors.ControlBrushKey на SystemColors.InactiveSelectionHighlightBrushKey - результаты были одинаковыми).
<Window x:Class="TestApp.TestWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TestApp"
mc:Ignorable="d"
Title="TestWindow" Height="300" Width="300" Loaded="Window_Loaded">
<Window.Resources>
<Style x:Key="myListboxStyle">
<Style.Resources>
<!-- Background of selected item when focused -->
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red" />
<!-- Background of selected item when not focused -->
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Green" />
</Style.Resources>
</Style>
</Window.Resources>
<Grid>
<ListBox x:Name="listBox" Style="{StaticResource myListboxStyle}" HorizontalAlignment="Left" Height="100" Margin="22,18,0,0" VerticalAlignment="Top" Width="237">
<ListBoxItem>Test 1</ListBoxItem>
<ListBoxItem>Test 2</ListBoxItem>
<ListBoxItem>Test 3</ListBoxItem>
</ListBox>
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="50,165,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
</Grid>
</Window>