2010-06-24 14 views
5

Ho cercato come modificare il colore del testo di un elemento selezionato in una casella di riepilogo che ha perso lo stato attivo.WPF Come modificare il colore del testo dell'elemento selezionato nella casella di riepilogo quando la casella di riepilogo perde lo stato attivo

<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/> 
    <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/> 
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Orange"/> 

Questi tre tag prendersi cura della maggior parte del lavoro, ma la mia casella di riepilogo ha uno sfondo nero e quando il controllo perde messa a fuoco, il tipo di carattere si trasforma in nero.

Ho trovato questo elenco da un altro post SystemColor. Keys che fornisce un sacco di opzioni possibili da questo elenco e tutto ciò che sembra remotamente intuitivo non ha funzionato. Qualcuno conosce la chiave che ho bisogno di cambiare?

risposta

1

uso seguente codice e basta cambiare i colori per esempio utilizzando Colors.Black

listBox.Resources.Add(SystemColors.ControlBrushKey, new SolidColorBrush(Color.FromArgb(0xFF, 0x7F, 0xDB, 0x14))); 
listBox.Resources.Add(SystemColors.ControlTextBrushKey, Brushes.White); 

Buona fortuna.

8

ho messo questo in un dizionario risorse per un elemento che contiene la casella di riepilogo:

   <Style TargetType="ListBoxItem"> 
       <Style.Resources> 
        <!--SelectedItem with focus--> 
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Blue"/> 
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="White"/> 
        <!--SelectedItem without focus--> 
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Blue"/> 
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="White"/> 
       </Style.Resources> 
      </Style> 

Si noti inoltre che in .Net 4.5 si deve chiedere per il comportamento "vecchio" impostando

 FrameworkCompatibilityPreferences. 
      AreInactiveSelectionHighlightBrushKeysSupported = false; 

all'inizio del programma prima che vengano create le finestre.

Problemi correlati