2010-06-24 6 views
5

Ich habe gesucht, wie man die Textfarbe eines ausgewählten Elements in einem Listenfeld ändert, das den Fokus verloren hat.WPF Wie ändere ich die Listbox des ausgewählten Artikels, wenn das Listenfeld den Fokus verliert

<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"/> 

Diese drei Tags kümmern die meiste Arbeit, aber meine Listenfeld hat einen schwarzen Hintergrund und wenn das Steuerelement den Fokus verliert, schaltet sich die Schrift auf schwarz.

Ich fand diese Liste von einem anderen Beitrag SystemColor. Keys, die eine Tonne von möglichen Optionen aus dieser Liste gibt und alles, was entfernt intuitiv scheint hat nicht funktioniert. Kennt jemand den Schlüssel, den ich ändern muss?

Antwort

1

Verwendung Code folgen und nur die Farben zum Beispiel ändern, indem Colors.Black

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

Viel Glück mit.

8

Ich habe dies in einem Ressourcenverzeichnis für ein Element des Listenfeld enthält:

   <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> 

Beachten Sie, dass auch in .Net 4.5 Sie für "altes" Verhalten fragen haben, indem

 FrameworkCompatibilityPreferences. 
      AreInactiveSelectionHighlightBrushKeysSupported = false; 

früh in Ihrem Programm, bevor irgendwelche Fenster erstellt werden.

Verwandte Themen