当属性和数据值为true时,我需要能够更改控件的Style
。例如,我的绑定数据具有IsDirty
属性。当IsDirty
为真且控件被选中时,我想更改控件的背景颜色。我找到了MultiTrigger
和MultiDataTrigger
类......但在这种情况下,我需要以某种方式触发数据和属性。我怎么能这样做?
另一个注意事项:我需要能够在XAML后面的代码中执行此操作。
答案 0 :(得分:11)
MultiDataTrigger与DependencyProperties一样,也适用于普通属性。只需将绑定中的Path设置为依赖项属性的名称即可。
您需要注意设置该绑定的源代码,因为默认情况下,source是触发器附加到的元素的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>
答案 1 :(得分:0)
以下是我在代码隐藏中实际执行的操作:
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
}
}
}