Главная » WPF » Триггеры  как новый вариант if

0

Триггеры представляют собой простой механизм  задания  правил. Они позво ляют выразить  некое условие  (с помощью значения) и действие  (список  объек тов Setter или действий при входе и выходе). В терминах языка C# триггеры эк вивалентны примерно  такому коду:

if (IsPressed) {

border.Background = Brushes.Red;

}

Поскольку  классы  MultiTrigger  и  MultiDataTrigger  позволяют  задавать  нес

колько условий, то с помощью триггеров можно реализовать и аналог такого кода:

if (IsPressed && IsMouseOver) {

border.Background = Brushes.Red;

}

Для этого потребуется  MultiTrigger (в предположении, что шаблон элемента управления остался без изменения):

<ControlTemplate TargetType=’{x:Type Button}’>

<Border x:Name=’border’>

<ContentPresenter />

</Border>

<ControlTemplate.Triggers>

<MultiTrigger>

<MultiTrigger.Conditions>

<Condition Property=’IsPressed’ Value=’true’ />

<Condition Property=’IsMouseOver’ Value=’true’ />

</MultiTrigger.Conditions>

<Setter TargetName=’border’ Property=’Background’ Value=’Red’

/>

</MultiTrigger>

</ControlTemplate.Triggers>

</ControlTemplate>

Если ни один триггер не сработает, то будет взято значение, заданное в самом элементе. На деле это означает, что ветвь else предложения if находится  внутри элемента. В данном случае мы можем оставить фон синим, если триггеры не при меняются:

<ControlTemplate TargetType=’{x:Type Button}’>

<Border x:Name=’border’ Background=’Blue’>

<ContentPresenter />

</Border>

<ControlTemplate.Triggers>

<MultiTrigger>

<MultiTrigger.Conditions>

<Condition Property=’IsPressed’ Value=’true’ />

<Condition Property=’IsMouseOver’ Value=’true’ />

</MultiTrigger.Conditions>

<Setter TargetName=’border’ Property=’Background’ Value=’Red’

/>

</MultiTrigger>

</ControlTemplate.Triggers>

</ControlTemplate>

Чего мы достигли?

В этой главе мы рассмотрели, как добавить поведение в ответ на событие, ини циированное пользователем или системой, с помощью различных моделей действий: событий, команд и триггеров.

Источник: К. Андерсон  Основы  Windows Presentation Foundation. Пер. с англ. А. Слинкина — М.: ДМК Пресс, 2008 — 432 с.: ил.

По теме:

  • Комментарии