Sono abbastanza nuovo per WPF ma esperto in .NET (Winforms). Sto cercando di manipolare lo stile di evidenziazione di una listbox per controllare il colore focalizzato e sfocato dell'oggetto selezionato. Ogni singolo tutorial su questo che ho trovato utilizza uno stile personalizzato per assegnare un nuovo valore a SystemColors.HighlightBrushKey e SystemColors.ControlBrushKey. Ma non sta funzionando. Dopo innumerevoli ore cercando di farlo funzionare, mi è venuto in mente che forse era collegato al sistema operativo. Lo stavo provando su un sistema Windows 10. Ho eseguito lo stesso identico codice su un'installazione di Windows 7, ed ecco, ha funzionato!WBox ListBox WPF in Windows 10
Quindi apparentemente il vecchio metodo non funziona in Windows 10 (almeno questo è quello che mi sembra). Qualcuno ha trovato un'alternativa? Alla fine della giornata, voglio solo che la listbox mantenga l'evidenziazione luminosa anche quando non ha il focus. L'evidenziazione grigia predefinita è difficile da vedere e non sembra appropriata in alcuni casi. Ho uno scenario del mondo reale in cui ci si sente molto innaturali perché l'evidenziazione scompaia praticamente quando l'attenzione si allontana dal ListBox.
seguito è il codice XAML ho usato che funzionava su Windows 7 ma non su Windows 10. (Per inciso, ho anche provato a sostituire SystemColors.ControlBrushKey con SystemColors.InactiveSelectionHighlightBrushKey - i risultati erano gli stessi).
<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>
Grazie Kory. Avevo già giocato con una soluzione simile alla tua (avevo già usato qualcosa del genere per personalizzare l'aspetto di un TreeView), ma le tue indicazioni mi davano i pezzi mancanti per ottenere esattamente quello che volevo. – Cosmicjive
questo ha funzionato per me, deludendo il fatto che in Windows 10 funzioni così tanto ... – 00jt