有哪些MVVM框架可以很好地与RoutedCommand配合使用?

9
RoutedCommand和RoutedUICommand有很多优点。它们内置了对文本和键盘手势的支持。您可以将一系列RoutedUICommands绑定到菜单的ItemsSource上,它会自动为您创建和绑定菜单项。一些命令(剪切、复制、粘贴)由开箱即用的控件自动支持。
然而,每当我使用MVVM时,我发现路由命令不适合,因为我必须为每个命令编写重复的样板XAML和代码。当我在做MVVM时,我通常会使用RelayCommand代替路由命令。有时这是一个足够好的解决方法,但它也有缺点--例如,键盘手势变得更加复杂
但是在观看了Rob Eisenberg的"Build your own MVVM Framework"演讲后,我不再满足于中继命令及其缺点。路由命令唯一的问题就是重复的样板代码,一旦将这些重复的代码提取到框架中并应用公约,似乎已经没有理由不在MVVM中使用路由命令了。
从技术上来说,实现起来并不难。该框架只需绑定到视图的CommandManager.CanExecuteExecuted事件,并应用公约以查找ViewModel中的方法和属性,例如,当执行Cut命令时,查找ViewModel上的ExecuteCut方法(和CanExecuteCut属性)。我可以构建自己的MVVM框架,使这个过程变得容易。
但我的问题是,是否已经有支持RoutedCommand的MVVM框架?我熟悉的唯一一个MVVM框架是Caliburn.Micro,但它目前不支持这种方式的路由命令(这让我感到惊讶,因为它确实支持自己的操作冒泡)。
2个回答

2
通过在SO和其他网站上进行了大量的研究,没有找到任何适合使用RoutedCommand的框架。
但是,WPF的一位信徒Josh Smith已经实现了一个不错的解决方案,使用MVVM与Routed Command。
您可以查看在WPF中使用ViewModel的RoutedCommands, 它被认为是在MVVM架构中使用RoutedCommands的简洁且轻量级的方法。

1

如果我没记错的话,Sacha Barber在那个方向上做了一些事情,我想你可以看看这里


1
它的网站上没有关于路由事件的说明。我快速浏览了一下源代码,但似乎没有相关内容。 - Joe White

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接