3

我有一个带有样式的自定义控件。该控件绑定到我的视图模型中的一个属性

<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 中引用与控件绑定的相同属性,我可以使它工作。我的问题是我有同一个控件的多个实例绑定到不同的值,我不想为每个实例创建一个新样式,所以我的问题是如何绑定到数据触发器中控件的绑定值.

4

3 回答 3

3

找到了。喜欢 WPF,但似乎你可以花几周时间研究不同的绑定表达式

 <DataTrigger Binding="{Binding Path=Content, RelativeSource={RelativeSource Mode=Self}}" Value="1">
于 2013-06-27T08:15:22.357 回答
0

也许你可以试试这个:

<ControlTemplate.Triggers>
    <Trigger Property="Content" Value="1">
        <Setter Property="Fill" TargetName="PART_rectangle" Value="Red" />
    </Trigger>
</ControlTemplate.Triggers> 

这样Trigger应该绑定ContentPromoAlarmBox.

于 2013-06-27T08:15:11.497 回答
-1

您应该使用 PriorityBinding 来实现目标行为

于 2013-06-27T08:09:34.903 回答