任何与RoutedCommand兼容的MVVM框架?

时间:2010-11-21 01:01:05

标签: mvvm routed-commands caliburn.micro

RoutedCommand和RoutedUICommand有很多功能。有文本和键盘手势的烘焙支持。您可以将RoutedUICommands的集合绑定到Menu的ItemsSource,它将自动为您创建和绑定菜单项。一些命令(剪切,复制,粘贴)由开箱即用的控件自动支持。

但是,每当我使用MVVM时,我发现路由命令都不合适,因为重复的样板XAML和代码隐藏我必须为每一个编写。当我在做MVVM时,我通常会使用RelayCommand而不是路由命令。这在某些时候是一个充分的解决方法,但它有缺点 - 例如,关键手势变为much more complicated

但在观看Rob Eisenberg的"Build your own MVVM Framework"会话后,我不再满足于接力指令及其缺点。路由命令的唯一问题是重复的样板代码,一旦将重复代码分解到框架中并应用约定,似乎没有任何理由不在MVVM中使用路由命令。

从技术上讲,看起来这并不难。框架应该只需要绑定到视图的CommandManager.CanExecuteExecuted事件,并应用约定来查找ViewModel上的方法和属性 - 例如,当执行Cut命令时,查找ViewModel上的ExecuteCut方法(和CanExecuteCut属性)。我可以构建自己的MVVM框架,使其变得简单。

但我的问题是,是否已经有使用RoutedCommand的MVVM框架了?我唯一熟悉的MVVM框架是Caliburn.Micro,它目前不支持路由以这种方式命令(这让我感到惊讶,因为它确实支持它自己的动作冒泡)。

2 个答案:

答案 0 :(得分:2)

SO和其他网站上进行了很多研究马拉松,没有找到任何适合PLAY with RoutedCommand的框架。

但其中一个WPF Disciple Josh Smith已经实现了使用Routed Command和MVVM的一个很好的解决方案。

你可以检查Using RoutedCommands with a ViewModel in WPF,它被称为干净和轻量级,以便在MVVM架构中使用RoutedCommands。

答案 1 :(得分:1)

如果我没记错的话,Sacha Barber在那方面做了一些事情,我想你可以看看here