WPF绑定到datatrigger中的父内容



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

<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应该绑定到PromoAlarmBoxContent属性。

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

相关内容

  • 没有找到相关文章

最新更新