Jestem całkiem nowy w WPF, ale doświadczony w .NET (WinForm). Próbuję manipulować stylem zaznaczenia w polu listy, aby kontrolować skupiony i nieostry kolor wybranego elementu. Każdy tutorial na ten temat, który znalazłem, używa niestandardowego stylu, aby przypisać nową wartość do SystemColors.HighlightBrushKey i SystemColors.ControlBrushKey. Ale to nie działa. Po niezliczonych godzinach próbujących uruchomić tę funkcję, przyszło mi do głowy, że może to związane z systemem operacyjnym. Próbowałem go w systemie Windows 10. Uruchomiłem dokładnie ten sam kod w konfiguracji systemu Windows 7, a oto i zadziałało!WPF ListBox Highlight w systemie Windows 10
Najwyraźniej stara metoda nie działa w systemie Windows 10 (przynajmniej tak mi się wydaje). Czy ktoś znalazł alternatywę? Podsumowując, chcę tylko, żeby listbox utrzymywał jasne światło nawet wtedy, gdy nie ma ostrości. Domyślne szare podświetlenie jest trudne do zauważenia i nie wydaje się odpowiednie w niektórych zastosowaniach. Mam scenariusz z prawdziwym światem, w którym to odczucie jest bardzo nienaturalne, aby podświetlenie zniknęło, gdy ostrość znika z ListBox.
Poniżej znajduje się kod XAML, którego użyłem, który działał na Windows 7, ale nie na Windows 10. (Przy okazji, próbowałem również zastąpić SystemColors.ControlBrushKey z SystemColors.InactiveSelectionHighlightBrushKey - wyniki były takie same).
<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>
Dzięki Kory. Już grałem z rozwiązaniem podobnym do twojego (wcześniej użyłem czegoś takiego, aby dostosować wygląd TreeView), ale twoje wskazówki dały mi brakujące elementy, aby uzyskać dokładnie to, co chciałem. – Cosmicjive
to zadziałało dla mnie, rozczarowujące, że w Windows 10 zajmuje to tyle pracy ... – 00jt