Условное изменение переднего плана элемента ComboBox WPF в зависимости от значения в элементе ItemsSource с привязкой к базе данных - PullRequest
2 голосов
/ 05 мая 2011

У меня есть WPF ComboBox, связанный с коллекцией List<Users>.Я применил DataTemplate для отображения FirstName с использованием TextBlock, и это работает, как и ожидалось:

        <ComboBox Margin="5" ItemsSource="{Binding Path=TheUsers}" Name="cboUsers">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Margin="10" Text="{Binding Path=FirstName}">
                    </TextBlock>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>`

В моем классе User есть элемент с именем IsActive, который является логическим значением.Если это правда, тогда я хочу установить для Переднего плана TextBlock значение Navy.

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

Я попытался реализовать DataTrigger и через час удалил код, потому что он не работал.Это не признало бы мое имя поля.У кого-нибудь есть очень простое руководство о том, как это сделать, или как лучше всего это сделать?

1 Ответ

4 голосов
/ 05 мая 2011

Поскольку вы, очевидно, не имеете дело с полями, этот стиль должен делать то, что вы хотите:

<TextBlock.Style>
    <Style TargetType="{x:Type TextBlock}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding IsActive}" Value="True">
                <Setter Property="Foreground" Value="Navy"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</TextBlock.Style>

Он не распознает имя моего поля.

Невозможно привязать поля, конец истории.

...