DataGrid MultiDataTrigger绑定到ViewModel属性

时间:2016-08-21 06:36:21

标签: c# wpf xaml mvvm datagrid

我在MVVM WPF项目中有一个View。我在页面中有一个DataGrid绑定到DataView(来自DataTable)。我需要的是使用MultiDataTrigger作为DataGrid行的背景颜色,应该由ViewModel属性的True值重新定义:

 public bool IsAutorized
 {
     get { return _isAutorized; }
     set
     {
         _isAutorized = value;
         OnNotifyPropertyChanged("IsAutorized");
     }
 }

而True值是DataRow的属性。这就是我现在所拥有的,并且对ViewModel属性的绑定不正确,当我在属性上设置断点时,它不会被“捕获”。

<Style.Triggers>
<Trigger Property="DataGridRow.IsSelected" Value="True">
    <Setter Property="Background" Value="#CCDAFF"/>
</Trigger>

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>                                                                       
        <Condition Binding="{Binding Path=IsAutorized,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Page}}" Value="True" />
        <Condition Binding="{Binding RelativeSource={RelativeSource Self},Path=IsNotSpecific}"  Value="True" />
    </MultiDataTrigger.Conditions>
    <Setter Property="Background" Value="#CCF4FF" />
</MultiDataTrigger>  </Style.Triggers>

绑定问题非常令人困惑,我试过谷歌但却一无所获。任何想法都很热吗?

谢谢。

- 编辑:

“IsNotSpecific”和“IsSelected”都是DataView中的Colmns,它来自DataTable,一个强类型的DataSet表。

选择行时,字段/列“IsSelected”设置为true并触发某种颜色。当View属性“IsAutorized”设置为true并且DataRow(来自DataTable)“IsNotSpecific”列设置为“True”时,应显示不同的颜色。

1 个答案:

答案 0 :(得分:0)

<Condition Binding="{Binding Path=DataContext.IsAutorized,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=DataGrid}}" Value="True" />

如果IsAutorized属性位于Main ViewModel中,则此条件将起作用。