我一直在試圖讓我的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,他們不會。
這是一個錯誤還是在這裏有什麼我應該明白的?