我使用以下代码使用MVVM实现三个状态复选框:
<CheckBox IsChecked="{Binding
Path=IsValueChecked,
Mode=TwoWay,
UpdateSourceTrigger=Explicit}"
Margin="3,10,0,0"
IsThreeState="True">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<i:InvokeCommandAction Command="{Binding Path=CheckCommand,
RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</i:EventTrigger>
<i:EventTrigger EventName="Unchecked">
<i:InvokeCommandAction Command="{Binding Path=CheckCommand,
RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</CheckBox>
在viewmodel中,创建了类型为Nullable<bool>
的可通知属性“IsValueChecked”。问题是单击复选框时不会触发“已检查”和“未选中”事件。
我缺少什么,请建议。
答案 0 :(得分:0)
扩展上面的Funk评论,看起来你正试图绑定到DataGrid级别的DataContext,但你的绑定实际上是尝试绑定到DataGrid本身的属性。鉴于DataGrid没有CheckCommand属性,这将失败。
尝试将绑定路径更改为:
{Binding Path=DataContext.CheckCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}