¿Cómo puedo cancelar el clic WPF TreeView de un usuario?

Tengo una aplicación WPF con un control Treeview.

Cuando el usuario hace clic en un nodo en el árbol, otros controles TextBox, ComboBox, etc. en la página se rellenan con los valores apropiados.

l usuario puede hacer cambios a esos valores y guardar sus cambios haciendo clic en el botón Guardar.

in embargo, si el usuario selecciona un nodo Treeview diferente sin guardar sus cambios, quiero mostrar una advertencia y una oportunidad para cancelar esa selección.

MessageBox: ¿Continuar y descartar los cambios no guardados? OK / Cancelar http://img522.imageshack.us/img522/2897/discardsj3.gi

XAML ...

<TreeView Name="TreeViewThings"
    ...
    TreeViewItem.Unselected="TreeViewThings_Unselected"
    TreeViewItem.Selected="TreeViewThings_Selected" >

Visual Basic ...

Sub TreeViewThings_Unselected(ByVal sender As System.Object, _
                              ByVal e As System.Windows.RoutedEventArgs)
    Dim OldThing As Thing = DirectCast(e.OriginalSource.DataContext, Thing)
    If CancelDueToUnsavedChanges(OldThing) Then
        'put canceling code here
    End If
End Sub

Sub TreeViewThings_Selected(ByVal sender As System.Object, _
                            ByVal e As System.Windows.RoutedEventArgs)
    Dim NewThing As Thing = DirectCast(e.OriginalSource.DataContext, Thing)
    PopulateControlsFromThing(NewThing)
End Sub

¿Cómo puedo cancelar esos eventos de anulación / selección?

Actualización: he hecho una pregunta de seguimiento ...
¿Cómo manejo adecuadamente un evento PreviewMouseDown con una confirmación de cuadro de mensaje?

Respuestas a la pregunta(9)

Su respuesta a la pregunta