C# 属性和数据值为true时触发WPF
当属性和数据值为true时,我需要能够更改控件的C# 属性和数据值为true时触发WPF,c#,wpf,triggers,datatrigger,multidatatrigger,C#,Wpf,Triggers,Datatrigger,Multidatatrigger,当属性和数据值为true时,我需要能够更改控件的样式。例如,我的绑定数据有一个IsDirty属性。当IsDirty为真且选中控件时,我想更改控件的背景色。我找到了MultiTrigger和MultiDataTrigger类……但在这种情况下,我需要以某种方式触发数据和属性。我该怎么做 另一个注意事项:我需要能够在代码隐藏而不是XAML中实现这一点。MultiDataTrigger对DependencyProperties的作用与对普通属性的作用一样好。只需将绑定中的路径设置为依赖项属性的名称 但
样式。例如,我的绑定数据有一个IsDirty
属性。当IsDirty
为真且选中控件时,我想更改控件的背景色。我找到了MultiTrigger
和MultiDataTrigger
类……但在这种情况下,我需要以某种方式触发数据和属性。我该怎么做
另一个注意事项:我需要能够在代码隐藏而不是XAML中实现这一点。MultiDataTrigger对DependencyProperties的作用与对普通属性的作用一样好。只需将绑定中的路径设置为依赖项属性的名称
但是,在设置绑定的源时需要小心,因为默认情况下,源是触发器所附加到的元素的DataContext。如果触发器在可选对象的样式中使用,则可以使用绑定的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
}
}
}
你能举个例子吗?对不起,我是WPF的新手。实际上,我需要为我的特殊情况在代码隐藏中执行此操作。我唯一搞不清楚的是如何指定相对资源Self。你知道怎么做吗?弄明白了,把你的答案标记为正确,然后我会发布我在相同情况下为其他人使用的代码隐藏版本。