否定条件元素MultiTrigger
问题描述:
我目前正在学习WPF以及使用MultiTrigger和Conditions设置样式化控件的某些属性。我知道MultiTrigger的条件必须全部满足(AND运算符)才能设置Setter指定的值。否定条件元素MultiTrigger
但是,如果不符合值,是否存在条件(让我们将其命名为NotCondition)。我有一个小例子来说明我的意思。
如果鼠标在控制的背景属性应该设置为“红”和内容是的“Hello World”。 另一种情况是,如果鼠标在和内容不的“Hello World”,背景应该是“蓝”。
<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-Element或Attribute来否定比较?
答
在这种使用颜色的特殊情况下,您可以使用触发优先。例如。当两个鼠标悬停和文字是世界,你好
<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>
最新触发覆盖从第一个触发效果。
没有什么积累在WPF,可以让你做的条件触发,但迈克Hillberg已经提出了这个问题一个非常interseting解决方案:A Comparable DataTrigger
希望这有助于
干杯,Anvaka 。