Отрицательный элемент или элемент Not Not для MultiTrigger - PullRequest
3 голосов
/ 24 февраля 2010

В настоящее время я изучаю WPF и использую MultiTrigger и Условия для установки некоторых свойств стилизованного элемента управления. Я знаю, что все условия MultiTrigger должны выполняться (оператор И), чтобы установить значение, указанное установщиком.

Но существует ли Условие, если значение не выполняется (назовем его NotCondition). У меня есть небольшой пример, чтобы проиллюстрировать, что я имею в виду.

Свойство Background-свойство должно быть установлено на 'Красный' , если мышь находится над , элемент управления и содержимое 'Hello World' . В другом случае, если мышь находится над , а содержимое не «Hello World» , фон должен быть «Blue» .

 <MultiTrigger>
   <MultiTrigger.Conditions>
     <Condition Property="IsMouseOver" Value="True" />
     <Condition Property="Content" Value="Hello World" />
   </MultiTrigger.Conditions>
   <Setter Property="Background" Value="Red"/>
 </MultiTrigger>
 <MultiTrigger>
   <MultiTrigger.Conditions>
     <Condition Property="IsMouseOver" Value="True" />
     <!--<NotCondition Property="Content" Value="Hello World" />-->
   </MultiTrigger.Conditions>
   <Setter Property="Background" Value="Blue"/>
 </MultiTrigger>

Как мне заархивировать что-то подобное в WPF / XAML? Есть ли элемент NotCondition или элемент в элементе Condition для отмены сравнения?

1 Ответ

4 голосов
/ 24 февраля 2010

В этом конкретном случае с цветами вы можете использовать приоритет триггеров. Э.Г.

<Trigger Property="IsMouseOver" Value="True">
  <Setter Property="Background" Value="Blue"/>
</Trigger>
<MultiTrigger>
 <MultiTrigger.Conditions>
  <Condition Property="IsMouseOver" Value="True"/>
  <Condition Property="Text" Value="Hello world"/>
 </MultiTrigger.Conditions>
 <Setter Property="Background" Value="Red"/>
</MultiTrigger>

Последний триггер отменяет эффект первого триггера, когда обе мыши находятся под мышкой и текст Hello world .

Нет ничего встроенного в WPF, который позволял бы вам создавать условные триггеры, , но Майк Хиллберг предложил одно очень пересекающееся решение этой проблемы: Comparable DataTrigger

Надеюсь, это поможет

...