触发器 "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}}}
我正在使用以下代码使用 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}}}