在MVVM中使用ViewModel命令的原因是什么?

时间:2016-08-17 11:50:04

标签: c# wpf mvvm xamarin

我无法理解:

  

但是,有时,View需要包含触发的按钮   ViewModel中的各种操作。 但ViewModel不得包含   单击按钮的处理程序,因为这将绑定ViewModel   特定的用户界面范例

指挥的原因是什么?

2 个答案:

答案 0 :(得分:1)

点击处理程序通常是由控件创建的事件。处理程序可以特定于您实际使用的控件。例如,您可以使用具有特定事件处理程序的事件创建自己的用户控件。

问题是您希望通过视图的实现来分离视图模型。我们不希望强制视图使用某些控件:可以在ListObservableCollectionListView等中查看ListBoxDataGrid也就是说,使用点击处理程序或任何处理程序将导致强制视图使用或返回这些处理程序。 这是视图和视图模型之间的依赖关系

因此,我们改用命令。它消除了这种依赖性,因为几乎任何控件都可以使用命令并在出现情况时发送命令事件(单击,拖放,等等)。

答案 1 :(得分:1)

我会尝试根据自己的经验给你一个实际的答案:

  • 使您的代码可测试:您可以阅读有关“单元测试”的更多信息,但基本上它们是用代码编写的场景,在这些场景中,您将假设结果。 现在因为这些“测试”只是c#代码,他们无法访问您的页面并单击按钮来测试结果。但另一方面,他们可以实例化您的ViewModel,并执行命令。
  • 如果以正确的方式编写ViewModel,您可以在不同平台的不同项目中重用这些ViewModel:UWP(手机,平板电脑,desktop.hololense,IOT),Xamarin(iOS,Android,MacOSX)。
  • 假设您正在编写此页面,其中有一个点击事件(在后面的代码中),它将向服务器提交数据。如果你想调用相同的方法会发生什么,但这次当用户按下键盘上的“Enter”时?使用命令,您可以轻松地将命令绑定到ViewModel中的正确事件