Выбранный элемент в списке не читается из-за цвета - PullRequest
0 голосов
/ 24 марта 2010

Я динамически создаю коллекцию стековых панелей в своем списке. В этой панели стека содержатся метки и флажок по горизонтали.

Проблема в том, что когда я нажимаю на панель стека, выбор становится нечитаемым, потому что линия становится темно-синей, тогда как буквы остаются черными и черными на синем, вы ничего не видите. Как я могу динамически изменить основной цвет выбранных элементов в стеке панели? Я говорю динамически, а не в файле XML, потому что все эти элементы динамически создаются из базы данных.

У меня есть код, подобный этому:

foreach (var utilis in item.user)
{
    StackPanelWithID ligne = new StackPanelWithID();
    ligne.Orientation = Orientation.Horizontal;
    ligne.ID = utilis.TRIGRAMME;
    ligne.Height = 21;
    Label l = new Label();
    l.Width = 120;
    Label l2 = new Label();
    l2.Width = 145;
    CheckBox cbEntretien = new CheckBox();
}

contentpresenter не будет работать ... Я попытался позиционировать его несколькими способами ... Итак, я нашел способ обвести проблему ... в 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>

Таким образом, фон выбранных элементов становится более четким, так что пользователь все еще может читать текст выбранных элементов списка.

и все элементы списка.

и все же ... Я хотел бы знать, как на самом деле можно изменить цвет текста выбранного элемента в списке ... если мне удастся получить ответ, я буду держать вас в курсе ...


Я сделал это ...

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

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

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

                        </Trigger>

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

но stll не работает, он говорит, что свойство триггера не может быть найдено в ControlTemplate ... Я пытался добавить его после свойства триггера, но тоже не работает ...


Я попробовал что-то подобное в 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>"

и в конкретном файле xaml, где мой список:

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

но при выполнении больше ничего не появляется в списке, ничего ... Я не понимаю ...

1 Ответ

2 голосов
/ 13 февраля 2011

Не знаю, если это все еще имеет значение (последний ответ был 25 марта 2010 г.), но для людей, которые все еще задаются вопросом, как это сделать, я сделал это так:

В части Style:

    <Style x:Key="myLBStyle" TargetType="{x:Type ListBoxItem}">

        <Style.Resources>

            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/> <!-- makes the background color transparent, removes backcolor border-->


            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Red"/> <!-- Sets the textcolor of the selected text to red -->

        </Style.Resources>
    </Style>

В списке я использую свойство ItemContainerStyle, например:

ItemContainerStyle = "{StaticResource myLBStyle}

Мне понадобилось время, чтобы найти, но вот оно. Надеюсь, что кто-то может использовать его!

Также удобно:

http://msdn.microsoft.com/en-us/library/ms603164.aspx

С наилучшими пожеланиями,

Sam

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...