我想知道典型 ViewModel 中的哪些属性、方法或变量使其与模型不同。
3 回答
在 MVVM 中,“模型”代表整个域模型,而 ViewModel 特定于特定视图,并且仅包含在视图中显示或修改的那些字段/属性。
另请参阅http://en.wikipedia.org/wiki/Model_View_ViewModel和http://msdn.microsoft.com/en-us/magazine/dd419663.aspx(后者是关于在 WPF 中使用 MVVM - 就像在 ASP 中一样。 NET,通常使用 MVC 而不是 MVVM)。
MVVM 解释:
模型是关于您的域的。经典示例是客户、订单、订单详细信息等。这些对您的用户界面是无视的。模型通常不包含任何委托给某些服务的代码。
视图模型是关于您如何呈现视图模型中的内容。假设您有一个包含详细信息的订单视图。视图模型可能包含有关当前订单详细信息的状态和其他可见状态,例如是否应该启用删除按钮?它还引用视图模型呈现的模型,例如订单和订单详细信息的集合。视图模型还可以执行诸如删除当前订单详细信息等操作。
视图模型被“优化”以绑定到视图。
因此,在 WPF 中,它们包含特定于表示层的属性,例如命令、图像源等。
此外,视图模型可以用数据注释属性装饰,这对模型来说是不好的做法;他们可以实现任何IDataErrorInfo
旨在用于 UI 的接口(如 );或者他们可以实现任何撤消/重做功能。
所有这些东西对领域模型都是有害的。