2010-06-24 23 views
5

He estado buscando cómo cambiar el color del texto de un elemento seleccionado en un cuadro de lista que ha perdido el foco.WPF Cómo cambiar el color de texto del elemento seleccionado de cuadro de lista cuando el cuadro de lista pierde el foco

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

Estos tres etiquetas hacerse cargo de la mayor parte del trabajo, pero mi cuadro de lista tiene un fondo negro y cuando el control pierde el foco, la fuente se convierte en negro.

Encontré esta lista de otra publicación SystemColor. Keys que ofrece un montón de opciones posibles de esta lista y todo lo que parece remotamente intuitivo no ha funcionado. ¿Alguien sabe la clave que necesito cambiar?

Respuesta

1

uso siguiente código y sólo cambiar los colores, por ejemplo mediante el uso de Colors.Black

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

Buena suerte.

8

que poner esto en un diccionario de recursos para un elemento que contiene el cuadro de lista:

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

Nótese también que en .Net 4.5 que tiene que pedir el comportamiento "viejo" mediante el establecimiento de

 FrameworkCompatibilityPreferences. 
      AreInactiveSelectionHighlightBrushKeysSupported = false; 

al principio de su programa antes de que se creen ventanas.

Cuestiones relacionadas