Comment puis-je annuler un utilisateur WPF Arborescence, cliquez sur?

J'ai une application WPF avec un contrôle Treeview.

Lorsque l'utilisateur clique sur un nœud de l'arbre, d'autres TextBox, ComboBox, etc. les contrôles sur la page sont remplis avec les valeurs appropriées.

L'utilisateur peut ensuite apporter des modifications à ces valeurs et de les enregistrer ses modifications en cliquant sur un bouton "Enregistrer".

Toutefois, si l'utilisateur sélectionne un autre nœud de Treeview sans enregistrer ses modifications, je veux afficher un avertissement et une opportunité pour annuler la sélection.

MessageBox: Poursuivre et d'ignorer vos modifications non enregistrées? OK/Annuler http://img522.imageshack.us/img522/2897/discardsj3.gif

XAML...

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

Visual Basic...

Sous TreeViewThings_Unselected(ByVal sender as System.Objet, _ 
ByVal e as System.De Windows.RoutedEventArgs) 
Dim OldThing Comme Chose = DirectCast(e.OriginalSource.DataContext, Chose) 
Si CancelDueToUnsavedChanges(OldThing) Puis 
"mettre l'annulation de code ici 
Fin De Si 
End Sub 

Sous TreeViewThings_Selected(ByVal sender as System.Objet, _ 
ByVal e as System.De Windows.RoutedEventArgs) 
Dim NewThing Comme Chose = DirectCast(e.OriginalSource.DataContext, Chose) 
PopulateControlsFromThing(NewThing) 
End Sub 

Comment puis-je annuler les désélectionner/sélectionner des événements?


Mise à jour: j'ai demandé à une question de suivi...
Comment puis-je gérer correctement un PreviewMouseDown événement avec une boîte de message de confirmation?

Sans rapport avec le délire: Merci de ne pas avoir une boîte de message vous demande une question oui/non, mais il a des boutons OK/Annuler.

OriginalL'auteur Zack Peterson | 2009-02-12