WPF: O MessageBox quebra o PreviewMouseDown?

Eu tenho tentado fazer com que meu aplicativo WPF solicite aos usuários que descartem suas alterações não salvas ou cancelem quando navegam usando um TreeVie

Como posso cancelar o clique no WPF TreeView de um usuário?Como lidar adequadamente com um evento PreviewMouseDown com uma confirmação MessageBox?

Acho que encontrei um bug. O MessageBox não funciona bem com o PreviewMouseDown. Parece "manipular" um clique, independentemente de como seu e.Handled é definido se houver uma MessageBox exibida.

Para este XAML ...

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

... compare esses 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

Esses dois métodos se comportam de maneira diferente. Sem a MessageBox,TreeViewNodes_Selected() ouTreeViewThings_Expanded() será executado. Com o MessageBox, eles não vã

Isso é um bug ou há algo acontecendo aqui que eu deveria entender?

questionAnswers(2)

yourAnswerToTheQuestion