Как изменить визуальное состояние элемента управления WPF на основе оценки других визуальных элементов? - PullRequest
1 голос
/ 23 сентября 2009

Я хочу сделать следующее:

<TextBlock Text="{Binding Result}">

Я хочу раскрасить это, основываясь на проверке равенства в Результате, как это сделать с ориентацией на представление? Я помню, как читал о шаблоне выбора, это правильный выбор здесь?

пример:

Text="Pass" Color="Green"
Text="Fail" Color="Red"

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

1 Ответ

3 голосов
/ 23 сентября 2009

Вы можете использовать триггеры внутри стиля:

<TextBlock Text="{Binding Result}">
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Result}" Value="Pass">
                    <Setter Property="Foreground" Value="Green" />
                </DataTrigger>

                <DataTrigger Binding="{Binding Result}" Value="Fail">
                    <Setter Property="Foreground" Value="Red" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

В качестве альтернативы вы можете создать IValueConverter реализацию, которая преобразует строки в кисти (в соответствии с вашими правилами) и напрямую использует привязку:

<TextBlock
    Text="{Binding Result}"
    Foreground="{Binding Result,Converter={StaticResource my:ResultBrushConverter}} />

Я не буду вдаваться в подробности этого параметра, потому что считаю, что вариант с чистым XAML - лучший путь.

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