当属性和数据值为真时 WPF 触发
Posted
技术标签:
【中文标题】当属性和数据值为真时 WPF 触发【英文标题】:WPF Trigger when Property and Data value are true 【发布时间】:2011-02-24 16:41:40 【问题描述】:当属性和数据值为真时,我需要能够更改控件的Style
。例如,我绑定的数据有一个IsDirty
属性。当IsDirty
为真并且控件被选中时,我想更改控件的背景颜色。我找到了MultiTrigger
和MultiDataTrigger
类......但在这种情况下,我需要以某种方式触发数据和属性。我该怎么做?
另一个注意事项:我需要能够在不是 XAML 的代码中执行此操作。
【问题讨论】:
【参考方案1】:这是我在代码隐藏中的实际操作方式:
new MultiDataTrigger
Conditions =
new Condition
Binding = new Binding("IsDirty"),
Value = true
,
new Condition
Binding = new Binding("IsSelected") RelativeSource = RelativeSource.Self ,
Value = true
,
Setters =
new Setter
Property = Control.BackgroundProperty,
Value = Brushes.Pink
【讨论】:
【参考方案2】:MultiDataTrigger 对 DependencyProperties 的作用与对普通属性的作用一样好。只需将绑定中的路径设置为依赖项属性的名称即可。
但是,您需要小心设置该绑定的源,因为默认情况下,源是触发器附加到的元素的 DataContext。如果触发器用于可选对象的样式中,则可以使用 Binding 的 RelativeSource 属性:
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="Binding Path=IsDirty" Value="True" />
<Condition Binding="Binding Path=IsSelected, RelativeSource=RelativeSource Self" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Cyan" />
</MultiDataTrigger>
【讨论】:
你能举个例子吗?抱歉,我对 WPF 很陌生。 我实际上需要在代码隐藏中针对我的特定情况执行此操作。我无法弄清楚的唯一部分是如何指定RelativeSource Self。你知道怎么做吗? 想通了,将您的答案标记为正确,然后我将发布我在相同情况下用于其他任何人的代码隐藏版本。以上是关于当属性和数据值为真时 WPF 触发的主要内容,如果未能解决你的问题,请参考以下文章
当应该为真时,Android Studio 改造响应返回布尔值为假
R:仅当同一列中的两行中的值为真时才将值添加到 [row,column]