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