本文主要是翻译Rachel Lim的一篇有关MVVM模式介绍的博文 A Simple MVVM Example
并具体给出了一个简单的Demo(原文是以WPF开发的,对于我自己添加或修改的一部分会用红色标注)
现在开始:
在我看来,如果你使用的是WPF或Sliverlight来开发程序就应该使用MVVM设计模式。它是你的代码清晰明了并易于维护。
可问题是网上有很多有关MVVM模式的资源都有自己强大的实现方式。这里我将介绍最基础的MVVM设计模式的实现方法。
MVVM(是Model-View-ViewModel的缩写)
Model: 保存数据的简单类对象,它只能包含属性和属性验证(应该就是验证属性值是否正确),而不负责存储数据、事件点击、复杂运算、业务规则和其他操作。
View: 呈现给用户的数据界面,很多情况下,他是以数据模板(DataTemplates)的方式告诉应用如何呈现类中内容的。
如果代码内容只跟View有关(比如社交焦点和执行动画),可以将代码写在View的后台。
ViewModel:用来处理逻辑。你的后台代码(数据访问、点击事件、复杂运算、业务规则验证等)都写在这里。这里面的代码View的反应。
比如,View中有一个ListBox对象、选中的对象、保存按钮。ViewModel中就要包含ObservableCollection集合、
Mode类型的SelectedObject和命令ICommand SaveCommand.
下面就通过一个简单的例子看看这三者之间是如何相互联系的。你会发现除了属性和方法名,任意一者是不需要访问另外两者的。
一旦接口被定义了,每一层可以完全独立于其他运行。
此例中,我使用的是Product Model,这个类中只含有属性和属性更改通知(INotifyPropertyChanged)
1.Model
public classProductModel : ObservableObject
{//字段
private int_productId;private string_productName;private decimal_unitPrice;//属性
public intProductId
{get { return_productId; }set{
SetProperty(ref this._productId, value);
}
}public stringProductName
{get { return_productName; }set{