触发“已检查/未选中”未在三个状态复选框中触发

时间:2016-09-03 06:39:02

标签: wpf checkbox mvvm threestate

我使用以下代码使用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”。问题是单击复选框时不会触发“已检查”和“未选中”事件。 我缺少什么,请建议。

1 个答案:

答案 0 :(得分:0)

扩展上面的Funk评论,看起来你正试图绑定到DataGrid级别的DataContext,但你的绑定实际上是尝试绑定到DataGrid本身的属性。鉴于DataGrid没有CheckCommand属性,这将失败。

尝试将绑定路径更改为:

{Binding Path=DataContext.CheckCommand, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}