我有一个带有样式的自定义控件。控件绑定到我的视图模型中的属性
<controls:PromoAlarmBox Content="{Binding Controller.IOGRP1W.Value}"/>
我想创建一个数据触发器,它根据绑定值更改控件的颜色,这适用于
<Style TargetType="{x:Type local:PromoAlarmBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<Rectangle x:Name="PART_rectangle" VerticalAlignment="Stretch" Fill="Yellow" Stroke="Black" Height="20" Width="20"/>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding Controller.IOGRP1W.Value, UpdateSourceTrigger=PropertyChanged}" Value="1">
<Setter Property="Fill" TargetName="PART_rectangle" Value="Red" />
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
到目前为止还不错。如果我在datatrigger中引用与控件绑定到的属性相同的属性,我就可以实现它。我的问题是,同一控件的多个实例绑定到不同的值,我不想为其中的每一个都创建新的样式,所以我的问题是如何在datatrictor中绑定到控件的绑定值。
找到了。喜欢WPF,但似乎你可以花几个星期的时间研究不同的绑定表达式
<DataTrigger Binding="{Binding Path=Content, RelativeSource={RelativeSource Mode=Self}}" Value="1">
也许你可以试试这个:
<ControlTemplate.Triggers>
<Trigger Property="Content" Value="1">
<Setter Property="Fill" TargetName="PART_rectangle" Value="Red" />
</Trigger>
</ControlTemplate.Triggers>
通过这种方式,Trigger
应该绑定到PromoAlarmBox
的Content
属性。
您应该使用PriorityBinding来实现目标行为