我一直在试图让我的WPF应用程序提示用户放弃他们未保存的更改,或者在他们使用TreeView进行导航时取消。WPF:是否MessageBox Break PreviewMouseDown?
- How can I cancel a user’s WPF TreeView click?
- How do I properly handle a PreviewMouseDown event with a MessageBox confirmation?
我想我已经找到了一个错误。 MessageBox对于PreviewMouseDown不会很好。无论如何设置e.Handled,如果显示MessageBox,它似乎都“处理”了一次点击。
对于这个XAML ...
<TreeView Name="TreeViewThings"
...
PreviewMouseDown="TreeViewThings_PreviewMouseDown"
TreeViewItem.Expanded="TreeViewThings_Expanded"
TreeViewItem.Selected="TreeViewThings_Selected" >
...比较这些替代方法...
Sub TreeViewNodes_PreviewMouseDown(...) e.Handled = False End Sub Sub TreeViewNodes_PreviewMouseDown(...) MessageBox.Show("Test", "Test", MessageBoxButton.OK) e.Handled = False End Sub
这两种方法的行为不同。如果没有MessageBox,将会执行TreeViewNodes_Selected()
或TreeViewThings_Expanded()
。使用MessageBox,他们不会。
这是一个错误还是在这里有什么我应该明白的?