【发布时间】:2011-02-28 09:53:31
【问题描述】:
我正在使用 MVVM 模式编写 WPF 应用程序,基于以下文章:WPF Apps With The Model-View-ViewModel Design Pattern
我的视图上有两个按钮,这些按钮的“Command”属性绑定(带有数据绑定)到 RelayCommand 类的给定实例(请参阅上面文章中的“图 3 RelayCommand 类”)。 RelayCommand 类支持检查给定的命令是否可以执行。
WPF 会自动禁用无法执行命令的按钮。
我的每个命令(在 ViewModel 类中)都会启动一个后台操作,并且在后台操作完成之前无法再次执行该命令。 RelayCommand 实例具有后台操作是否仍在工作或已完成的信息。
我的问题如下:按下任何按钮后,按钮自动禁用(这没关系),因为后台操作开始并且命令在完成之前无法执行,但是在操作完成后,这些按钮不会自动启用,因为它们的命令的“可以执行”谓词不会自动重新评估。重新评估可以通过让应用程序松动并重新获得焦点(通过按 ALT+TAB)来手动触发。完成此技巧后,按钮再次启用。
如何以编程方式重新评估按钮命令的“可以执行”状态?
【问题讨论】:
标签: wpf mvvm command relaycommand