2009-08-20 4 views
4

Je possède ce contrôle (WPF) qui utilise un CommandBinding et il s'enregistre comme ceci:Comment effacer les liaisons de commandes enregistrées par CommandManager?

CommandBinding binding = new CommandBinding(ApplicationCommands.Delete, OnDeleteExecuted, CanExecuteDelete); 
CommandManager.RegisterClassCommandBinding(typeof(MyObject), binding); 

Alors, quand je décharge le contrôle, je veux effacer cette liaison. Comment pourrais-je m'y prendre?

Merci!

+0

http://stackoverflow.com/questions/21511674/set-command-target-to-template-part/21515179#21515179 –

Répondre

-2
+0

BindingOperations.ClearAllBindings (this); être mieux pour ce cas? – Carlo

+2

Si vous êtes dans le contexte du contrôle, alors oui. Vous pouvez instantanément effacer toutes les liaisons pour ce contrôle. – Charlie

+0

Ça a l'air bien. Je vous remercie. – Carlo

3

Si la portée des commandes est un UIElement concret, vous devriez mieux utiliser:

  • inscrire CommandBinding: myUIelement.CommandBindings.Add (myCommand);
  • Annuler l'enregistrement d'une instruction CommandBinding: myUIelement.CommandBindings.Remove (myCommand);
  • Désenregistre toutes les commandes CommandBindings: myUIelement.CommandBindings.Clear();

J'espère que cela aide.

Questions connexes