WPF ListView Inactive Selection Color

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) Colore di selezione inattivo predefinito (troppo chiaro)

Come posso cambiare questo colore così la mia lista intriggers appare come questa? (vedi sotto) La selezione inattiva e attiva è la stessa

Soluzione

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.

                    

inserisci la descrizione dell'immagine qui

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.