MVVM中的命令

时间:2013-03-06 13:37:22

标签: wpf mvvm command msdn

我一直在看教程,人们在他们的代码中创建CanExecute等方法。我假设他们这样做是为了帮助读者理解它是如何工作的。当我查看Command和ICommand时,它将我带到MSDN上用于Windows应用商店应用程序的ICommand类。是否没有WPF的Command类?

1 个答案:

答案 0 :(得分:8)

WPF中ICommand的内置实现是RoutedCommand(及其兄弟RoutedUICommand)。 RoutedCommand的作用如下:

  

Execute上的CanExecuteRoutedCommand方法不包含   命令的应用程序逻辑就像典型的情况一样   ICommand,但是,这些方法会引发遍历的事件   元素树查找具有CommandBinding的对象。事件   附加到CommandBinding的处理程序包含命令逻辑。

这个问题是这些事件处理程序必须附加到视图的代码隐藏中,这正是想要在MVVM中执行的操作

在代码中看到CanExecute方法的教程(我们实际上是指ICommand实现之外的代码)正在使用自定义命令实现,例如{{3} }和DelegateCommand旨在"转发"他们CanExecute / Execute逻辑到动态提供的功能;通常,那些是viewmodel上公开命令的方法。

这些实现通常由MVVM框架提供(对于这两个示例,框架分别是Prism和MVVM Light),但它们非常简单(都是开源,抓取代码并阅读它)以及那些如果你不想要整个框架,没有什么可以阻止你复制/粘贴代码。

您可以将上面的内容概括为&#34; 内置了WPF中的命令类,但它在MVVM&#34;的上下文中并没有用。< / p>