触发器 "Checked/Unchecked" 未在三态复选框中触发

Trigger "Checked/Unchecked" not firing in three state checkbox

我正在使用以下代码使用 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>

并且在视图模型中,创建了类型为 Nullable<bool> 的可通知 属性 "IsValueChecked"。问题是单击复选框时不会触发事件 "Checked" 和 "Unchecked"。 我缺少什么,请提出建议。

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

尝试将绑定路径更改为:

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