我在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”时,应显示不同的颜色。
答案 0 :(得分:0)
<Condition Binding="{Binding Path=DataContext.IsAutorized,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=DataGrid}}" Value="True" />
如果IsAutorized属性位于Main ViewModel中,则此条件将起作用。