【发布时间】:2010-12-02 17:13:14
【问题描述】:
这似乎是一个愚蠢的问题,但我查看了有关 prism 的文档并搜索了互联网,但找不到示例……这是交易。
我在 Prism 中使用 DelegateCommand,它工作正常,除非我将委托分配给 CanExecute 方法。在另一个视图模型中,我有一个事件,它需要一个我正在发布的 bool,我可以看到该事件正在触发,并且 bool 正在通过其中的命令传递给我的视图模型没问题,但这就是我所做的'不明白……execute怎么知道状态变了?这是示例的一些代码。
从视图模型ctor
eventAggregator.GetEvent<NavigationEnabledEvent>().Subscribe(OnNavigationEnabledChange, ThreadOption.UIThread);
NavigateCommand = new DelegateCommand(OnNavigate, () => nextButtonEnabled);
现在 - 这是 OnNavigationEnableChange 事件。
private void OnNavigationEnabledChange(bool navigationState)
{
nextButtonEnabled = navigationState;
}
enter code here
就像 - 我在这里完全遗漏了一些东西 - 命令如何知道 nextButtonEnabled 不是真的?
如果有人能给我指出一个很棒的工作示例。
好的 - 谢谢!
【问题讨论】:
-
对您的要求有点困惑...您是否想知道它如何知道何时再次调用 CanExecute 以刷新命令的执行能力?您通过 EventAggregator 进行的事件注册我认为这让事情变得混乱......也许是一个更简洁的代码示例,因为您的事件处理程序与命令处理程序是分开的。
-
是的,你的第一个问题是正确的......它如何知道通过调用 CanExecute 来刷新命令执行能力?我也只是没说。感谢您的帮助!
标签: mvvm c#-4.0 prism delegatecommand