WPF - 在实际检查或取消选中之前执行Checked和Unchecked事件?

时间:2011-07-21 18:50:39

标签: wpf

我的问题是同伴。我有一个ListView绑定到一个对象列表。然后我在该对象中有一个属性是布尔值。在ListView中,我有一个复选框,根据列表中该特定对象的bool值设置为选中或取消选中。

所以我告诉自己,为什么不当你点击它在那一行上执行一些动作..但问题是用户可以取消操作,如显示同时应用和取消的窗口。如果用户取消操作..无论如何都要检查复选框!

有没有办法取消此操作?

感谢。

2 个答案:

答案 0 :(得分:2)

只要您在取消选中复选框时没有任何特殊处理,就可以在选中复选框时将特殊处理移动,而不是在单击复选框时触发。如果选择取消,则可以通过将对象中的源bool重置为False再次取消选中该复选框,并忽略未经检查的事件。

如果你确实有未经检查的特殊处理,你可以使用绑定的SourceUpdated事件来检测复选框何时导致bool翻转为false而不是bool导致复选框翻转为未选中。

如果要检测对象的bool何时导致检查更新:

<CheckBox isChecked="{Binding MyBool, Mode=TwoWay, NotifyOnTargetUpdated=True}" TargetUpdated="MyTargetUpdated"/>

如果要检测复选框何时导致对象的bool更新:

<CheckBox isChecked="{Binding MyBool, Mode=TwoWay, NotifyOnSourceUpdated=True}" SourceUpdated="MySourceUpdated"/>

您可以同时执行这两项操作,从而检测两种方式的更改并相应地执行操作,以便您可以选择仅在更新数据时或仅在更新CheckBox时执行操作。

答案 1 :(得分:0)

我可能会误解你的问题,但听起来你想要的是你有一个ListView,CheckBox绑定到ViewModel中的属性。选中或取消选中CheckBox时,您有一个执行某些可取消操作的事件。取消操作后,您是否要将复选框值恢复为原始检查前的值?

如果是这样,在取消的情况下,不是后面代码中的IsChecked属性,也不是ViewModel中的属性值。