C# 从CommandManager取消订阅。是否建议重新查询?WPF

C# 从CommandManager取消订阅。是否建议重新查询?WPF,c#,wpf,events,C#,Wpf,Events,我在WPF中实现了一个简单的按钮,它在XAML中绑定到ICommand 虽然它工作得很好,但我通过以下代码触发了CanExecute(): public event EventHandler CanExecuteChanged { add { CommandManager.RequerySuggested += value; } remove { CommandManager.RequerySuggested -= value;

我在WPF中实现了一个简单的
按钮
,它在XAML中绑定到
ICommand

虽然它工作得很好,但我通过以下代码触发了
CanExecute()

 public event EventHandler CanExecuteChanged
        {
            add { CommandManager.RequerySuggested += value; }
            remove { CommandManager.RequerySuggested -= value; }
        }
问题是,实例化的
ICommand
被此事件保持活动状态,即使在我完成它之后,
CanExecute()
仍由
CommandManager
持续触发


我想我在
ICommand
实例中得到了一个临时的不受欢迎的补丁,它以
List
的形式出现,添加了
add{}
中的每个传入
值,然后我通过迭代它并调用
CommandManager.RequerySuggested-=eventItem
,手动取消订阅,但我想知道是否有更好的方法,或者我用错了吗?

请阅读这里-这似乎表明它应该被垃圾收集,但随后大量用户报告它不是,并且仍在调用
CanExecute
,这也是我面临的问题…您在发布时检查了它而没有调试器吗?啊,因此,它在没有调试器的情况下可以正常工作,但这还不够好。不幸的是:(.为什么这不好?调试器是Studio的一个非常好的功能,但是,是的,它在处理时工作起来有点奇怪。