PreviewMouseDown拦截SelectedItemChanged事件

时间:2017-09-11 14:10:52

标签: wpf

我有一个TreeView,它是导航WPF应用程序的主要方式。

当用户选择TreeView中的新项目时,如果他们要离开的页面有未保存的信息,我们就有机会取消移动以继续处理当前数据/保存它。这当前发生在PreviewMouseDown事件处理程序中。

然而,似乎抛出一个提供yes / no / cancel选项的对话框可以防止SelectedItemChanged事件实际触发,我假设因为发生了另一次鼠标点击。因此,如果他们拒绝选择留在当前页面,它仍然没有改变。

有没有办法从PreviewMouseDown内重新启动该事件,以便仍然可以调用SelectedItemChanged事件?

1 个答案:

答案 0 :(得分:1)

  

有没有办法从PreviewMouseDown中重新触发事件,以便仍然调用SelectedItemChanged事件?

手动调用事件处理程序就像调用方法一样容易。或者更好的是,将事件处理程序中的代码分解为从PreviewMouseDown处理程序和SelectedItemChanged处理程序调用的独立方法。

另一种选择是更改SelectedItemIsSelected属性,以便事件再次触发。