我正在使用 MVVM 模式编写 WPF 应用程序,基于以下文章:具有模型-视图-视图模型设计模式的 WPF 应用程序
我的视图上有两个按钮,按钮的“Command”属性绑定(带有数据绑定)到 RelayCommand 类的给定实例(请参见上面文章中的“图 3 RelayCommand 类”)。RelayCommand 类支持检查给定命令是否可以执行。
WPF 会自动禁用无法执行命令的按钮。
我的每个命令(在 ViewModel 类中)都会启动一个后台操作,并且在后台操作完成之前无法再次执行该命令。RelayCommand 实例具有后台操作是否仍在工作或已完成的信息。
我的问题如下:按下任何按钮后,按钮会自动禁用(这没关系),因为后台操作开始并且命令在完成之前无法执行,但是在操作完成后,按钮不会'不会自动启用,因为他们的命令的“可以执行”谓词不会自动重新评估。重新评估可以通过让应用程序松动并重新获得焦点(通过按 ALT+TAB)来手动触发。完成此技巧后,按钮再次启用。
如何以编程方式重新评估按钮命令的“可以执行”状态?