0

我有一个 WPF 应用程序窗口,其中包含一组三个按钮(按钮 A、B、C),这些按钮具有与各自视图模型属性的命令绑定。

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

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

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

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

4

2 回答 2

1

查看在视图模型中执行命令逻辑,看看文章后面部分中描述的 DataContextCommandAdapter 是否可以链接/调用按钮 B 所需的命令。

于 2012-11-06T13:36:00.433 回答
0

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

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

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

非常感谢

于 2012-11-06T16:46:10.977 回答