C# 如何清除CommandManager注册的命令绑定?

C# 如何清除CommandManager注册的命令绑定?,c#,wpf,commandbinding,C#,Wpf,Commandbinding,我有一个使用CommandBinding的控件(WPF),它的注册方式如下: CommandBinding binding = new CommandBinding(ApplicationCommands.Delete, OnDeleteExecuted, CanExecuteDelete); CommandManager.RegisterClassCommandBinding(typeof(MyObject), binding); 因此,当我卸载控件时,我想清除这个绑定。我该怎么做呢 谢谢

我有一个使用CommandBinding的控件(WPF),它的注册方式如下:

CommandBinding binding = new CommandBinding(ApplicationCommands.Delete, OnDeleteExecuted, CanExecuteDelete);
CommandManager.RegisterClassCommandBinding(typeof(MyObject), binding);
因此,当我卸载控件时,我想清除这个绑定。我该怎么做呢


谢谢

如果命令的作用域是一个具体的UIElement,则最好使用:

  • 注册CommandBinding:myUIelement.CommandBindings.Add(myCommand)
  • 取消注册CommandBinding:myUIelement.CommandBindings.Remove(myCommand)
  • 取消注册所有CommandBindings:myUIelement.CommandBindings.Clear()

我希望这会有所帮助。

将BindingOperations.ClearAllBindings(this);在这种情况下更好吗?如果你在控件的上下文中,那么是的。您可以立即清除该控件的所有绑定。这并不能以任何方式回答问题@Carlo询问CommandManager上的CommandBinding,它与BindingBase无关……这是什么样的答案?这不应该有任何投票。