我正在尝试为我的 MVVM 应用程序实现一个高度响应的 UI,所以我选择让所有命令处理程序自动执行,BackgroundWorker
这样它们就不会阻塞 UI。
但同时,我不希望用户能够在后台执行相同的命令时执行它。解决方案似乎很明显:
Executed
调用处理程序时,让CanExecute
处理程序返回false
- 启动
BackgroundWorker
异步 - 完成
BackgroundWorker
后,让CanExecute
处理程序true
再次返回。
问题是,我需要在第 1 步之后通知 WPF,并在第 3 步之后再次通知 WPF,该步骤CanExecute
已更改并且应该是必需的。我知道我可以通过调用来做到这一点CommandManager.InvalidateRequerySuggested
,但这会导致CanExecute
所有其他命令的处理程序也被重新查询。有很多命令,这不好。
有没有办法要求重新查询特定命令 - 即当前正在执行的命令?
TIA