我有一些自定义 CommandBindings 可以确定各种 MediaCommands(播放、暂停等)的 CanExecute 状态。我想触发 CanExecute 处理程序在某些时候被调用。但是,我能弄清楚如何做到这一点的唯一方法是使用 InvalidateRequerySuggested(),它会导致一切重新计算其 CanExecute。这太过分而且很慢,所以我想找出一种更好、更有针对性的方法来更新这些命令上的 CanExecute。
看起来如果我使用了一个 DelegateCommand,我可以通过调用 RaiseCanExecuteChanged 来做到这一点,但如果可能的话,我想用现有的 MediaCommands 来做到这一点。
如果没有任何直接的方法可以做到这一点,是否有任何 hacky 解决方法?我注意到在内部重新计算 CanExecute 有一些智能(比如第一次显示 UIElements 等)