日期:2014-05-17  浏览次数:21069 次

|ZYCWPF| 在ComboBox中,哪一个事件是,鼠标选中后触发的事件 谢谢
我要给鼠标选中ComboBox的项后触发事件
但是这个事件不是SelectionChanged
因为这个事件的话,在后台MVVM设置值的时候也会触发
而我只想要的是在鼠标选定某个项后触发

谢谢
------解决方案--------------------
你可以反过来想
后台MVVM设置值之前设一个变量,表示无视该SelectionChanged事件
后台MVVM设置值之后再将这个值设回来
------解决方案--------------------
SelectedIndexChanged或SelectedValueChanged
------解决方案--------------------
1楼说的方法很好啊。不算麻烦啊,只要在在执行前设置标志、执行后取消标志、事件处理前判断下标志,修改三个地方加上一个bool变量定义就可以了,我觉得这是最简便的解决方法了。

如果确实有很多地方用到这样的设置,你可以给ComboBox写个类似AddItemWithOutRasingEvents扩展方法,在这个方法里设置比如_disableEvents这样的标志,然后其它地方都改成调用这个扩展方法。
再来也可以写个自定义控件继承Combox,按类似上面的方法把所有会触发事件的方法都重写掉,设置一个标志再调用base的方法。这样比用扩展方法严密些,不过还是没有直接了当用1楼的方法好。