Style
当属性和数据值为真时,我需要能够更改控件的。例如,我绑定的数据有一个IsDirty
属性。我想更改控件的背景颜色,当IsDirty
它为真并且控件被选中时。我找到了MultiTrigger
和MultiDataTrigger
类......但在这种情况下,我需要以某种方式触发数据和属性。我怎样才能做到这一点?
另一个注意事项:我需要能够在不是 XAML 的代码中执行此操作。
Style
当属性和数据值为真时,我需要能够更改控件的。例如,我绑定的数据有一个IsDirty
属性。我想更改控件的背景颜色,当IsDirty
它为真并且控件被选中时。我找到了MultiTrigger
和MultiDataTrigger
类......但在这种情况下,我需要以某种方式触发数据和属性。我怎样才能做到这一点?
另一个注意事项:我需要能够在不是 XAML 的代码中执行此操作。
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>
以下是我在代码隐藏中的实际操作方式:
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
}
}
}