我需要刷新一个或多个(尽管不是全部)
我知道可以使用以下方法更新所有命令:
有什么想法可以实现这样的机制吗?我知道
RoutedCommand
对象的CanExecute
状态。我知道可以使用以下方法更新所有命令:
CommandManager.InvalidateRequerySuggested();
由于此更新比必要的命令多,因此在我的应用程序中调用此函数有时会导致性能问题。
我最初的希望是手动调用CanExecute()
也会在状态更改时触发事件,但事实并非如此。
当查看参考源代码时,CanExecuteChanged
似乎无法访问,以提供某种扩展到RoutedCommand
类的派生类,以允许手动引发事件。
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
有什么想法可以实现这样的机制吗?我知道
DelegateCommand
,但我需要一个路由命令,所以我不认为这个类能帮助我。
ICommand
添加到接口列表中时才有效,这一点我没有考虑到。谢谢。 - floele