当一个属性和数据值为 true 时,我需要能够更改控件的 Style
。例如,我的绑定数据有一个 IsDirty
属性。当 IsDirty
为 true 且该控件被选中时,我想要更改该控件的背景颜色。我找到了 MultiTrigger
和 MultiDataTrigger
类...但在这种情况下,我需要以某种方式触发数据和属性。我该怎么做?
另外需要注意的是:我需要能够在代码后端而不是 XAML 中实现此功能。
当一个属性和数据值为 true 时,我需要能够更改控件的 Style
。例如,我的绑定数据有一个 IsDirty
属性。当 IsDirty
为 true 且该控件被选中时,我想要更改该控件的背景颜色。我找到了 MultiTrigger
和 MultiDataTrigger
类...但在这种情况下,我需要以某种方式触发数据和属性。我该怎么做?
另外需要注意的是:我需要能够在代码后端而不是 XAML 中实现此功能。
MultiDataTrigger对于依赖属性和普通属性同样有效。只需将绑定中的Path设置为你的依赖属性的名称。
但是,你需要小心设置该绑定的源,因为默认情况下,源是附加触发器的元素的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>
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
}
}
}