【问题标题】:Any MVVM frameworks that play nice with RoutedCommand?任何与 RoutedCommand 配合得很好的 MVVM 框架?
【发布时间】:2011-05-13 06:16:26
【问题描述】:

RoutedCommand 和 RoutedUICommand 有很多用途。内置对文本和键盘手势的支持。您可以将 RoutedUICommands 集合绑定到菜单的 ItemsSource,它会自动为您创建和绑定菜单项。开箱即用的控件自动支持某些命令(剪切、复制、粘贴)。

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

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

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

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

【问题讨论】:

    标签: mvvm routed-commands caliburn.micro


    【解决方案1】:

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

    【讨论】:

    • 它的网站没有提到路由事件。我快速浏览了源代码,但似乎没有任何相关内容。
    【解决方案2】:

    SO 和其他网站上进行了大量的研究马拉松,没有找到任何合适的框架来玩 RoutedCommand。

    但是 WPF Disciple Josh Smith 中的一个已经实现了一个很好的解决方案,即使用带有 MVVM 的路由命令。

    您可以检查Using RoutedCommands with a ViewModel in WPF,它被声明为在 MVVM 架构中使用 RoutedCommands 时干净且轻量级。

    【讨论】:

      猜你喜欢
      • 2010-11-24
      • 2011-05-02
      • 2010-09-11
      • 1970-01-01
      • 2015-05-27
      • 2014-04-07
      • 2019-05-18
      • 1970-01-01
      • 2010-09-11
      相关资源
      最近更新 更多