WPF: ¿MessageBox rompe BreakMouseDown?

He estado tratando de hacer que mi aplicación WPF les pida a los usuarios que descarten sus cambios no guardados o que cancelen cuando naveguen con TreeView.

¿Cómo puedo cancelar el clic WPF TreeView de un usuario? ¿Cómo manejo adecuadamente un evento PreviewMouseDown con una confirmación de cuadro de mensaje?

Creo que he encontrado un error. MessageBox no funciona bien con PreviewMouseDown. Parece que "maneja" un clic independientemente de cómo esté configurado e.Handled si se muestra un cuadro de mensaje.

Para este XAML ...

<TreeView Name="TreeViewThings"
    ...
    PreviewMouseDown="TreeViewThings_PreviewMouseDown"
    TreeViewItem.Expanded="TreeViewThings_Expanded"
    TreeViewItem.Selected="TreeViewThings_Selected" >

... compare estos métodos alternativos ...

Sub TreeViewNodes_PreviewMouseDown(...)
    e.Handled = False
End Sub

Sub TreeViewNodes_PreviewMouseDown(...)
    MessageBox.Show("Test", "Test", MessageBoxButton.OK)
    e.Handled = False
End Sub

Estos dos métodos se comportan de manera diferente. Sin el cuadro de mensaje,TreeViewNodes_Selected() oTreeViewThings_Expanded() se ejecutará. Con MessageBox, no lo harán.

Es esto un error o hay algo aquí que debería entender?

Respuestas a la pregunta(2)

Su respuesta a la pregunta