首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ICommand对RoutedCommand

ICommand对RoutedCommand
EN

Stack Overflow用户
提问于 2009-07-16 07:37:00
回答 2查看 41.3K关注 0票数 52

让我们将按钮Command属性绑定到自定义命令。

什么时候应该实现ICommand,什么时候从RoutedCommand派生?我看到RoutedCommand实现了ICommand

在这种情况下,我可能需要实现一个ICommand?MVVM模型呢?哪个更适合这个目的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-16 12:34:28

正如您已经注意到的,班级ICommand接口的实现,如果它的功能类似于RoutedEvent,则它的主要区别是

CanExecute上的RoutedCommand和Execute方法不包含命令的应用程序逻辑,就像典型的ICommand那样,而是引发跨元素树寻找具有CommandBinding的对象的事件。附加到CommandBinding的事件处理程序包含命令逻辑。 Execute方法引发PreviewExecuted和执行的事件。CanExecute方法引发PreviewCanExecute和CanExecute事件。

在不需要RoutedCommand行为的情况下,您将看到自己的ICommand实现。至于MVVM模式,我不能说这是一个解决方案,似乎每个人都有自己的方法。然而,下面是我遇到的一些解决这个问题的方法:

  • 在WPF中使用RoutedCommands和ViewModel
  • 中继命令逻辑
  • 简单指挥 (几乎与中继命令相同,但值得一读)
票数 69
EN

Stack Overflow用户

发布于 2009-07-16 12:49:28

对于Rich的回答,我要补充的唯一一点是,RoutedCommands (以及他们更为流行的后代RoutedUICommand )必须用事件处理程序连接起来才能正确工作。

我遇到的大多数MVVM实现都试图利用针对ViewModel的绑定,因此ViewModel (而不是视图)拥有CanExecute/Execute逻辑。

相反,事件处理程序将该负担移至视图。然后,处理可以传播到ViewModel,但这意味着ViewModel和视图(强制转换+方法调用等)之间的耦合程度要稍高一些。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1135983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档