WPF将数据触发器绑定到不同的属性

本文关键字:属性 绑定 数据 触发器 WPF | 更新日期: 2023-09-27 18:03:57

我有一个像这样的Teleric RadGrid View它被绑定到一个名为Load:

的属性
    <telerik:RadGridView x:Name="myRadGridView"
                         ItemsSource="{Binding Load}"> 

我有一个DataTrigger相同的网格,我想绑定到一个名为checkColor的属性,这是在同一个类作为RadGridView的Load属性。我认为这不起作用是因为两个属性都在同一个类中?正确的语法是什么?

        <telerik:RadGridView.Resources>
            <Style TargetType="telerik:GridViewRow">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding checkColor}" Value="true">
                        <DataTrigger.Setters>
                            <Setter Property="Background" Value="Blue" />
                        </DataTrigger.Setters>
                    </DataTrigger>
                </Style.Triggers>
            </Style> 
        </telerik:RadGridView.Resources>

WPF将数据触发器绑定到不同的属性

重新审视这个问题,最终找到了真正的解决方案。

1)在Window中添加一个指向我想要引用的类的项。

xmlns:local="clr-namespace:MyClass"
2)在父组件上为它创建一个静态资源:
    <DockPanel.Resources>
        <local:Changes x:Key="MyViewModel"/>
    </DockPanel.Resources>

3)设置setter绑定指向它:

<Setter Property="Background" Value="{Binding Source={StaticResource MyViewModel}, Path=checkColor}"/>

古老的"解决方案":

最终通过将checkColor函数将要返回的数据放入RadGridView绑定的DataTable中的新列来解决问题。由于列是RadGridView的绑定范围的一部分,我可以像这样将它绑定到DataTrigger:

<telerik:RadGridView.Resources>
    <Style TargetType="telerik:GridViewRow">
        <Style.Triggers>
            <DataTrigger Binding="{Binding checkColorDataColumn}" Value="1">
            <DataTrigger.Setters>
                <Setter Property="Background" Value="Blue" />
            </DataTrigger.Setters>
        </Style.Triggers>
    </Style>
</telerik:RadGridView.Resources>