将RelayCommand存储在MVVM中的良好实践

时间:2012-01-12 22:49:20

标签: wpf command viewmodel mvvm-light

我需要为ViewModel设置不同的命令,如关闭,编辑,取消,ShowPic,ShowVideo。
基于我所拥有的不同ViewModel,我有像Close,Edit,Cancel这样的常用命令,它们执行相同的操作,只有上下文可以不同。然后对于像ShowPic,ShowVideo这样的其他人来说,他们属于他们自己的视图模型。

在这种情况下,如何将命令组织为良好实践:

  1. 您是否将它们全部放在一个单独的类别“Commands”中?
  2. 你是否将它们放在各自的ViewModels中,甚至有些常见?
  3. 您是否将常用命令与其他命令分开?
  4. 感谢您的建议,并举例说明如何组织它们。

2 个答案:

答案 0 :(得分:0)

某些非视图特定的命令(例如Print,Save等具有独立于视图的通用功能)可以在Uility和{{1}的某个静态Execute类中声明为静态可以使用XAML中的CanExecute属性绑定处理程序。

但是视图特定的命令应该驻留在x:Static中。

答案 1 :(得分:0)

答案是“2”。

即使其他ViewModel具有相同的命令,它的注入服务(如果您不知道我在说什么,请阅读“IoC”)在ViewModel中执行繁重工作并允许您避免冗余逻辑。

相关问题