gpt4 book ai didi

.net - 多重触发的否定或非条件元素

转载 作者:行者123 更新时间:2023-12-01 13:07:04 26 4
gpt4 key购买 nike

我目前正在学习 WPF 以及使用 MultiTrigger 和 Conditions 来设置样式化控件的一些属性。我知道 MultiTrigger 的 Conditions 必须全部满足(AND-Operator)才能设置 Setter 指定的值。

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

如果鼠标悬停在控件上并且内容为“Hello World”,则 Background-Property 应设置为'Red' .另一种情况是,如果鼠标悬停并且内容不是'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-Element 或 Condition-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>

当鼠标悬停且文本为Hello world 时,最新触发器会覆盖第一个触发器的效果。

WPF 中没有任何内置功能可让您执行条件触发器,但是 Mike Hillberg 针对此问题提出了一个非常有趣的解决方案:A Comparable DataTrigger

希望对你有帮助

关于.net - 多重触发的否定或非条件元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2324875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com