使用PRISM的MVVM模式上下文中的命令方法是什么?

sha*_*874 2 c# wpf prism mvvm

阅读以下信息,我仍然对Command方法而不是Command对象的含义感到困惑. http://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx#sec10

给出的唯一示例,以及我通过搜索找到的唯一示例显示了命令对象的示例.有人可以发布一个绑定到命令方法的按钮示例,或者指向其他地方的示例吗?它只是视图模型类的常规方法,视图模型类的静态方法,还是完全不同的东西?

sha*_*874 6

啊,我明白了.问题是从棱镜4开发者指南中完全删除了一个部分,该部分已经存在于Prism 4文档中.直到我打开了我在计算机上本地保存的旧Prism 4 PDF时,我才感到困惑.

以下是Prism 4开发人员指南中的示例:

从视图调用命令方法将 命令实现为ICommand对象的另一种方法是将它们简单地实现为视图模型中的方法,然后使用行为直接从视图中调用这些方法.这可以通过与从行为调用命令类似的方式实现,如上一节所示.但是,您使用CallMethodAction而不是使用InvokeCommandAction.以下代码示例在基础视图模型上调用(无参数)Submit方法.

XAML

<Button Content="Submit" IsEnabled="{Binding CanSubmit}">
  <i:Interaction.Triggers>
    <i:EventTrigger EventName="Click">
      <i:CallMethodAction TargetObject="{Binding}" Method="Submit"/>
    </i:EventTrigger>
  </i:Interaction.Triggers>
</Button>
Run Code Online (Sandbox Code Playgroud)

TargetObject通过使用{Binding}表达式绑定到基础数据上下文(即视图模型).Method参数指定要调用的方法.注意:CallMethodAction不支持参数; 如果需要将参数传递给目标方法,则必须在视图模型上提供值作为属性,切换到使用带有InvokeCommandAction的命令,或者编写将传递参数的CallMethodAction的自己版本.

似乎命令对象概念是许多人的首选,但我对新手册明确列出了两个选项但只描述其中一个这一事实感到困惑!