静态类ApplicationCommands
由许多RoutedUICommand
s 组成,其中一些可能是纯粹基于视图的命令(撤消/重做、剪切/复制/粘贴),但其他的最终需要使用视图模型。但是,当使用后面的命令之一时,例如Save
,没有干净的方法将命令传播到视图模型:
<CommandBindings>
<CommandBinding Command="Save" Executed="Save_Executed" />
</CommandBindings>
....
<MenuItem Command="Save" />
这将调用Save_Executed
代码隐藏类上的事件处理程序,因为它将在 MVP 模式中使用,但它不允许我将命令移动到 MVVM 中的视图模型,除非在Save_Executed
事件处理程序中使用这条丑陋的行:
((ViewModel1)this.DataContext).Save();
这也与其他命令完全不一致,比如RelayCommand
直接在视图模型中定义的s。由于所有这些不便,我的印象是 ApplicationCommands 在设计时只考虑了 MVP,而不是 MVVM。
需要传播到视图模型的命令是否完全可用?