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>
重新审视这个问题,最终找到了真正的解决方案。
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>