Пробовали ли вы выполнить одно из следующих действий (извлечено из книги Адама Натана: Windows Presentation Foundation Unleashed ):
- Несколько триггеров, примененных к одному элементу (чтобы получить логическое ИЛИ).
- Несколько свойств оцениваются для одного и того же триггера (чтобы получить логическое И).
Логическое ИЛИ
Поскольку Style.Triggers могут содержать несколько триггеров, вы можете создать более одного с одинаковыми Setters для выражения логического отношения OR.
Например:
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
...
</Trigger>
<Trigger Property="IsKeyboardFocusWithin" Value="True">
....
</Trigger>
</Style.Triggers>
Это означает, что «если IsMouseOver истинно или , если IsKeyboardFocusWithin истинно, применить действие.
Логическое И
Для выражения логического отношения И можно использовать вариант Триггер , называемый MultiTrigger , или вариант DataTrigger , называемый MultiDataTrigger . Оба триггера имеют коллекцию условий , которая содержит информацию, которую вы обычно помещаете непосредственно в триггер или DataTrigger.
Например:
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="IsKeyboardFocusWithin" Value="True"/>
</MultiTrigger.Conditions>
</MultiTrigger>
<Setter ...>
<Setter ...>
</Style.Triggers>