Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WPF How to change the listbox selected item text color when the list box loses focus

I've been searching for how to change the text color of a selected item in a list box that has lost 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"/>

These three tags take care of most of the work, but my list box has a black background and when the control loses focus, the font turns to black.

I found this list from another post SystemColor. Keys that gives a ton of possible options from this list and anything that seems remotely intuitive has not worked. Does anybody know the key that I need to change?

like image 797
Mike Van Alstine Avatar asked Jun 24 '10 16:06

Mike Van Alstine


2 Answers

I put this in a resource dictionary for an element containing the listbox:

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

Notice also that in .Net 4.5 you have to ask for "old" behavior by setting

      FrameworkCompatibilityPreferences.
            AreInactiveSelectionHighlightBrushKeysSupported = false;

early in your program before any windows are created.

like image 103
John Melville Avatar answered Sep 20 '22 04:09

John Melville


use following code and just change the colors for example by using Colors.Black

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

Good luck.

like image 32
Sebastian Krogull Avatar answered Sep 19 '22 04:09

Sebastian Krogull