DataGrid MultiDataTrigger绑定到ViewModel属性

DataGrid MultiDataTrigger绑定到ViewModel属性

问题描述:

我在MVVM WPF项目中有一个View。我有一个页面中的DataGrid绑定到DataView(从DataTable)。我需要的是用MultiDataTrigger为DataGrid行的背景颜色,应该由视图模型属性的真值进行重新定义:DataGrid MultiDataTrigger绑定到ViewModel属性

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> 

绑定问题非常混乱,我试过googleing它,但什么都没发现。任何想法很难做到这一点?

谢谢。

- 编辑:

“IsNotSpecific” 和 “IsSelected” 都是Colmns的数据视图,即从数据表中,一个强类型DataSet的表中获取。

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

+0

你为什么写这个RelativeSource? IsAutorized显然不是Page的财产。 – Clemens

+0

@Clemens IsAutorized是ViewModel的一个属性。我只是尝试一切,因为我不知道会发挥什么作用。我如何到达VM属性? –

+0

请增加更多信息。 –

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

如果IsAutorized属性位于Main ViewModel中,则此条件将有效。

+0

谢谢,我会测试它 –

+0

对不起,无法正常工作。 “IsAutorized”没有正确绑定并且未被调用。 –

+0

哪个viewmodel具有DataGrid的“IsAutorized”属性和ItemsSource? – ParameterX