2010-06-24 7 views
5

Je cherchais comment modifier la couleur du texte d'un élément sélectionné dans une zone de liste qui a perdu le focus.WPF Comment modifier la couleur du texte de l'élément sélectionné dans la liste déroulante lorsque la zone de liste perd le focus

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

Ces trois balises prendre en charge la plupart des travaux, mais ma liste a un fond noir et quand le contrôle perd le focus, la police se tourne vers le noir.

J'ai trouvé cette liste d'un autre article SystemColor. Keys qui donne une tonne d'options possibles de cette liste et tout ce qui semble à distance intuitive n'a pas fonctionné. Est-ce que quelqu'un connaît la clé que je dois changer?

Répondre

1

utilisez le code ci-dessous et juste changer les couleurs par exemple en utilisant Colors.Black

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

Bonne chance.

8

Je mets cela dans un dictionnaire de ressources pour un élément contenant la zone de liste:

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

Notez également que .Net 4.5, vous devez demander un comportement « vieux » en mettant

 FrameworkCompatibilityPreferences. 
      AreInactiveSelectionHighlightBrushKeysSupported = false; 

au début de votre programme avant que toutes les fenêtres sont créées.

Questions connexes