英文原文:Intro to the Model-View-ViewModel Design Pattern
MVVM 模式能够帮你把你程序的业务与展现逻辑从用户界面干净地分离开。保持程序逻辑与界面分离能够帮助解决很多开发以及设计问题,能够使你的程序能更容易的测试,维护与升级。它也能很大程度的增加代码重用性,并让开发者与界面设计者更容易地相互合作。
使用 MVVM 模式,程序的 UI 和其背后的展现与业务逻辑将被分离至三个类中:
1-视图,封装 UI 与 UI 逻辑
2-模型视图,封装展示逻辑与状态
3-模型,封装程序的业务逻辑以及数据
MVVM 模式是展示-模型模式的变种,它优化了一些 WPF 的核心特性,例如数据绑定,数据模版,命令以及行为。在 MVVM 模式中,视图通过数据绑定以及命令行与视图模型交互,并改变事件通知。视图模型查询观察并协调模型更新,转换,校验以及聚合数据,从而在视图显示。
下图展示了 MVVM 类以及它们之间的交互:

视图类
视图的责任便是定义用户在屏幕上能看到的一切的结构以及外观。理想的视图背后的代码只包含调用 InitializeComponent 方法的构造函数。视图通常扮演以下关键角色:
-
视图是可视化元素,例如窗口,页面,用户控件或者数据模版
-
视图定义了包含在视图里的控件以及可视化层以及样式
-
视图通过 DataContext 属性应用视图模型
-
绑定了控件以及数据的属性以及命令被视图模型暴露出来
-
视图可以定制化视图与视图模型间数据绑定行为
-
视图定义以及处理 UI 可视化行为例如动画
-
视图背后的代码实现了用 XAML 很难表达的可视化行为
视图模型类
视图模型在 MVVM 模式中为视图封装了展示逻辑,它并不是直接引用视图或者任何其他关于视图特定的实现或者类型。视图模型实现了属性以及命令使得视图进行数据绑定,并通过改变事件通知来提醒视图状态已经改变了。视图模型提供的属性和命令定义了提供给 UI 的功能。但是视图定义了如何渲染的功能。
视图模型负责协调视图与任何需要的模型类的交互。很典型的,视图模型与视图类有着一堆多的关系。视图模型可以选择直接将模型类暴露给视图,因此视图的控件能够直击进行数据绑定。视图模型可以转换或者操纵模型数据所以能够很容易被视图使用。
很典型的,视图模型会定义能被展现在 UI 上并被用户调用的的命令或者行为。一个通用的例子就是当视图模型需要提交命令时会允许用户提交数据到网络服务或者数据库。视图可以选择用一个按钮来展示所以用户能够点击该按钮提交数据。典型地,当命令编程不可用的,它相关的 UI 展示也变得不可用。视图模型通常扮演下面这些关键角色:
-
模型视图是非可视化类,它封装了展现逻辑
-
视图模型是可以独立于视图与模型调试的
-
视图模型很典型地是不直接引用视图的
-
视图模型实现了视图用来数据绑定的属性与命令
-
视图模型通过改变提醒事件通知视图状态的改变:INotifyPropertyChanged 与 INotifyCollectionChanged
-
视图模型协调视图与模型的交互
-
视图模型可以定义视图展现给用户的逻辑状态
模型类
model 在 MVVM 模式中封装了业务逻辑以及数据,业务逻辑定义了像所有检索和程序数据管理相关的程序逻辑一样,用来确保所有的保证数据持久与有效的业务规则被应用。最大化代码重用,模型不能包含任何特定的情况,特定的用户任务以及程序逻辑。
典型的有模型为程序展现了客户端域模型,模型也可能包含支持数据访问与缓存的代码,即使有一个分离的数据库或者服务被使用。模型与数据房分层通常被作为数据访问或呜呜结构而生成,例如 ADO.NET 尸体矿井唉,WCF 数据服务,或者 WCF RIA 服务。
模型层实现了轻松绑定视图的功能。这通常意味着它支持通过 INotifyPropertyChanged 与 INotifyCollectionChanged 进行属性与集合更改通告。展现对象集合的模型类典型地源自 ObservableCollection<T>类,该类提供了对 INotifyCollectionChanged 接口的实现。
模型也能通过 IDataErrorInfo 接口支持数据验证以及错误报告。这些接口允许当数值改变时的 WPF 数据绑定被通知,从而更新界面。模型通常扮演如下的关键角色:
-
模型类是不可视类,它封装了程序数据
-
模型类不直接应用视图或视图模型类
-
模型类不依赖于它们是如何实现的
-
模型类是典型地通过 INotifyPropertyChanged/INotifyCollectionChanged 接口提供属性与集合更改事件的.
-
模型类很典型地继承自 ObservableCollection<T> 类
-
模型类是很典型地通过 IDataErrorInfo/INotifyDataErrorInfo.提供数据验证与错误报告
-
模型类典型地与封装了数据访问的服务一起使用。
原文来自:http://www.oschina.net/question/89964_46543
M<wbr>V<wbr>V<wbr>M<wbr>模<wbr>式<wbr>完<wbr>整<wbr>实<wbr>例:</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
http://wenku.baidu.com/view/ea993c1f650e52ea551898de.html
相关推荐
ASP.NET MVVM(Model-View-ViewModel)是一种设计模式,主要应用于WPF(Windows Presentation Foundation)和Silverlight等UI框架,但也可应用于ASP.NET Web应用程序。MVVM模式旨在提高开发效率,通过分离关注点,让...
**WPF与MVVM设计模式框架详解** Windows Presentation Foundation(WPF)是Microsoft推出的一种用于构建桌面应用程序的用户界面框架,它基于.NET Framework,并且专为Windows操作系统设计。WPF提供了一个丰富的图形...
MVVM(Model-View-ViewModel)是一种设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和视图模型(ViewModel)。在MvvmCross中,模型代表数据和业务逻辑,视图负责用户界面的呈现,而视图模型...
MVVM(Model-View-ViewModel)模式是一种软件设计模式,常用于创建用户界面,特别是在WPF(Windows Presentation Foundation)和UWP(Universal Windows Platform)应用程序中。这个模式在C#编程中非常流行,因为它...
在IT领域,特别是Windows Presentation Foundation (WPF)的开发中,MVVM(Model-View-ViewModel)设计模式已经成为构建用户界面的主流选择。本主题主要关注如何在WPF项目中运用MVVM模式来实现数据的增删改操作,这...
总的来说,这个项目提供了学习和实践WPF和MVVM设计模式的实例,同时也涵盖了与微信API交互、网络通信、数据处理等多个方面。对于想要提升Windows桌面应用开发技能的程序员来说,这是一个极好的学习资源。
### ASP.NET设计模式详解 #### 一、设计模式概述 设计模式是软件工程领域中一种通用的解决方案,它描述了在特定情况下解决常见问题的方法。这些模式不是具体的代码,而是一种设计思路,可以帮助开发人员更好地组织...
《精通ASP.NET设计模式》是一本深入探讨ASP.NET框架下软件设计原则与模式的专业书籍,由Scott Millett撰写,Wiley Publishing, Inc.出版。本书不仅涵盖了基础的设计模式理论,还详细介绍了如何将这些模式应用于ASP...
**ASP.NET设计模式** ASP.NET设计模式是软件开发中一种重要的思想,它提供了一套标准的解决方案,用于解决在构建基于ASP.NET平台的Web应用程序时常见的问题和挑战。设计模式是经验丰富的开发者们在实践中提炼出的...
MVVM(Model-View-ViewModel)是一种软件设计模式,广泛应用于现代UI开发,尤其是在WPF、UWP、Android、iOS以及Web前端等平台。它源自经典的MVC(Model-View-Controller)模式,但在UI开发中提供了更强大的数据绑定...
.NET设计模式系列文章是一份详尽的资源,涵盖了软件开发中的23种经典设计模式,这些模式在.NET框架中有着广泛的应用。设计模式是解决软件设计中常见问题的经验总结,它们提供了一种标准的解决方案,使得开发者能够用...
在.NET框架中,MVVM(Model-View-ViewModel)设计模式是开发WPF(Windows Presentation Foundation)应用程序的常用方法。本文将深入探讨如何利用CommunityToolkit.Mvvm库来实现MVVM模式,以及它与传统的MvvmLight库...
在ASP.NET中,设计模式如MVC(Model-View-Controller)、MVVM(Model-View-ViewModel)或Web Forms等,帮助开发者组织代码,提高可维护性和可扩展性。同时,大幅度和萨芬萨芬可能是指性能优化和规模扩展,这在ASP...
在本文中,我们将深入探讨WPF(Windows Presentation Foundation)中的MVVM(Model-View-ViewModel)设计模式,并通过一个从登录功能到车辆管理系统的增删改案例,详细讲解这一模式的应用。MVVM模式是现代WPF开发中...
在本项目中,开发者使用了WPF(Windows Presentation Foundation)技术,配合.NET Framework 4.5,MvvmLight(Model-View-ViewModel Light)设计模式,以及SQLite数据库,实现了一个简单但实用的数据管理应用程序。...
MVVM(Model-View-ViewModel)模式是WPF中广泛采用的设计模式,用于实现用户界面(UI)的解耦和可测试性。这个例子程序旨在帮助开发者理解和实践WPF中的MVVM模式。 MVVM模式的核心理念是将应用程序分为三个主要部分...
在Windows Presentation Foundation (WPF) 中,MVVM(Model-View-ViewModel)是一种设计模式,它将业务逻辑、用户界面和数据模型分离,使得代码更易于维护和测试。本篇文章将详细探讨如何在MVVM模式下有效地使用...
书中涵盖了一系列关键知识点,包括设计原则、设计模式、架构策略以及.NET框架中的惯用法。 1. **设计原则**:书中的设计原则是整个.NET设计规范的基础。主要包括单一职责原则(Single Responsibility Principle, SRP...
在Windows Presentation Foundation (WPF)开发中,MVVM(Model-View-ViewModel)模式已经成为一种主流的设计模式。这个模式将应用程序的业务逻辑、用户界面和数据模型分离,使代码更易于测试、维护和扩展。本示例...
MVVM(Model-View-ViewModel)是一种设计模式,广泛应用于WPF开发中。它将应用程序的业务逻辑、用户界面和数据模型分离,提高了代码的可测试性和可维护性。在MVVM架构中: - **Model**:表示应用程序的数据模型,...