应用程序窗口未激活时单击Wpf按钮

时间:2012-11-06 10:58:29

标签: wpf button click focus

我有一个带有三个按钮(按钮A,B,C)的WPF应用程序窗口,这些按钮具有绑定到相应视图模型属性的命令。

单击按钮A时,执行命令(启动另一个应用程序,禁用按钮A,因为CommandCanExecute条件更新为false)。这导致应用程序窗口被停用。

单击按钮B不会执行它的命令,而是仅激活窗口并将焦点设置为主窗口。按钮B上需要第二次单击才能执行其命令。

单击按钮B时所需的功能,当应用程序窗口未激活时,应用程序窗口激活,并执行与按钮B相关的命令。我还尝试删除命令并添加单击处理程序以进行测试,但这会显示相同的行为。

感谢您对此问题的任何帮助。

2 个答案:

答案 0 :(得分:1)

查看Executing Command Logic in a View Model,看看本文后面部分描述的DataContextCommandAdapter是否可以链接/调用按钮B所需的命令。

答案 1 :(得分:0)

确定了与我们的Command绑定设置方式相关的问题。

解决方案是触发CanExecuteChanged event,以便框架重新评估相关的CommandCanExecute。在条件发生变化时,我用ICommand替换了Prism DelegateCommand实现并调用了委托命令的RaiseCanExecuteChanged()方法。

在使用Prism DelegateCommand之前,我尝试调用CommandManager.InvalidateRequerySuggested()但在这种情况下没有帮助。我没有完全调查为什么,但我们已经在其他应用程序中使用PRISM,所以使用DelegateCommand就足够了。

非常感谢