Для этого пользователю необходимо нажать «ОК», вручную нажать кнопку «Отменить изменения» (рядом с кнопкой «Сохранить»), нажать другую кнопку «Вы уверены?» окно сообщения, и только после этого снова перемещайтесь по дереву.

ался заставить мое приложение WPF предлагать пользователям либо отменить свои несохраненные изменения, либо отменить их при переходе с помощью TreeView.

Как я могу отменить пользовательский клик WPF TreeView?Как правильно обработать событие PreviewMouseDown с подтверждением MessageBox?

Я думаю, что нашел ошибку. 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()&nbsp;или жеTreeViewThings_Expanded()&nbsp;выполню. С MessageBox они не будут.

Это ошибка или здесь что-то происходит, что я должен понять?