Sto creando un’applicazione WPF in cui diverse selezioni di ListView sono fatte in una riga (simile al browser di iTunes). Il problema è che il colore di selezione intriggers predefinito è troppo leggero. (vedi sotto)
Come posso cambiare questo colore così la mia lista intriggers appare come questa? (vedi sotto)
Sovrascrivi il SystemColor predefinito con uno Style
come questo:
Il modello ListBox
utilizza un colore di sistema denominato ControlBrush
per impostare il colore di evidenziazione inattivo. Pertanto, puoi semplicemente ignorare quel colore:
Red
Cambiare SystemColors.ControlBrushKey
non ha funzionato per me, ho dovuto cambiare SystemColors.InactiveSelectionHighlightBrushKey
Quindi, invece di:
Ho dovuto usare:
In alcuni casi la risposta risolverà il problema, ma non è ideale in quanto si interrompe quando il controllo è disabilitato / readonly e sovrascrive anche le combinazioni di colors, piuttosto che sfruttarle. Il mio suggerimento è di aggiungere il seguente nei tag ListBox invece:
Ciò che questo farà è impostare il colore di sfondo Evidenzia sulla voce della casella di riepilogo ogni volta che viene selezionato (indipendentemente dallo stato del controllo).
La mia risposta si basa sull’aiuto della risposta già fornita, insieme al seguente blog: http://blogs.vbcity.com/xtab/archive/2009/06/29/9344.aspx
Devi sovrascrivere alcune proprietà di SystemColors. Dai un’occhiata a SystemColors Class (MSDN) . Esistono più proprietà di InactiveSelectionHighlightBrushKey, ad esempio InactiveSelectionHighlightTextBrushKey che influisce sul colore del testo.
Per me questo ha fatto il trucco:
Nei vecchi .NET Framework, i colors di sistema che sovrascrivono non funzionano. La soluzione che funziona in .NET Framework 4.0 è qui .
Funziona sia per ListBox che per ListView.