首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >否定或不为MultiTrigger的条件元素

否定或不为MultiTrigger的条件元素
EN

Stack Overflow用户
提问于 2010-02-24 09:27:38
回答 1查看 4.4K关注 0票数 3

我目前正在学习WPF和使用MultiTrigger和条件来设置样式控件的一些属性。我知道,MultiTrigger的条件必须满足(和-操作符)才能设置由设置器指定的值。

但是,如果不满足值,是否存在条件(让我们将其命名为NotCondition)。我有一个小例子来说明我的意思。

如果鼠标在控件上方,且内容为“Hello”,则背景属性应设置为“红色”。另一种情况是,如果鼠标已经结束,内容是而不是 'Hello‘,背景应该是“蓝色”。

代码语言:javascript
复制
 <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或一个属性来否定比较?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-24 09:52:16

在这种颜色的特殊情况下,可以使用触发器优先。例如。

代码语言:javascript
复制
<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时,最新的触发器覆盖了第一个触发器的效果。

在WPF中没有任何内置的方法可以让您执行条件触发器,但是 Mike Hillberg为这个问题提出了一个非常令人心烦的解决方案:可比较的DataTrigger

希望这能有所帮助

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2324875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档