views:

274

answers:

3

I dynamically create a collection of stackpanels in my listbox. In this stackpanel are contained labels and checkbox horizontally aligned. The problem is when I click on a stackpanel, the selection is unreadable because the line become dark-blue whereas the letters stay black so black on blue, you see nothing... how can I dynamically change the forecolor of the selected elements in the stackpanel ? I say dynamically and not in the xml file, because all those elements are dynamically created, base on a database...

thanksssss!!

A: 

I tried something like this in the App.xaml : "

<Style x:Key="SimpleListBoxItem" TargetType="ListBoxItem">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListBoxItem">
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="true">
                                <Setter Property="Background" <!--can't find the text property so try to act on the Background color to set it to a different color than dark blue-->
                                            Value="Red"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>"

and in the particular xaml file where my listbox is :

<ListBox Margin="9,64,8,313" Loaded="lstUtilisateurs_Loaded" Name="lstUtilisateurs" ItemContainerStyle="{StaticResource SimpleListBoxItem}"/>

but when executing, nothing appears anymore in the listbox, nothing... I don't get it...

Anna
You need to add a <ContentPresenter> inside <ControlTemplate>.
Scott J
A: 

I did this...

<ControlTemplate TargetType="ListBoxItem">
                    <ContentPresenter>
                        <ControlTemplate.Triggers>

                            <Trigger Property="IsSelected" Value="true">

                            <Setter Property="Background"
                                        Value="Red"/>

                        </Trigger>

                    </ControlTemplate.Triggers>
                        </ContentPresenter>
                </ControlTemplate>

but stll not working, it says the trigger property can't be found in ControlTemplate... I tried to add it after the trigger property, but not working either...

Anna
A: 

contentpresenter won't work... I tried several way to position it... So, I found a way to circle the problem ... in the app.xaml :

 <Application.Resources>
    <Style TargetType="{x:Type ListBoxItem}">
                        <Style.Resources>
                            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightBlue"/>
                        </Style.Resources>
    </Style>
</Application.Resources>

Thus the background of selected items is clearer so that the user can still read text of the selected listboxitems.

and every listboxitem is concerned.

and yet... I would love to know how on earth it's possible to change the selected item's text color in list box.. if I manage to get the answer I'll keep you in touch...

Anna