一、MVVM 和 MVVMLight介绍

MVVM是Model-View-ViewModel的简写。类似于目前比较流行的MVC、MVP设计模式,主要目的是为了分离视图(View)和模型(Model)的耦合。

它是一种极度优秀的设计模式,但并非框架级别的东西,由MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构。

立足于原有MVP框架并且把WPF的新特性糅合进去,以应对PC端开发日益复杂的需求变化。

结构如图所示:

相对于之前把逻辑结构写在Code Behind 里面的方式,MVVM几乎完全解耦了视图和逻辑业务的关系,通过数据绑定和命令来处理UI属性

及事件驱动。同理,ViewModel的视图交互业务逻辑处理导致的属性变更也会通知到View前端,让View前端实时更新。Model中存放数据模型和数据逻辑、业务逻辑。

其实我个人认为,数据和业务交互这一层还是应该另外独立,Model中完全就是实体模型,这样更清晰。

这种类型的双向绑定非常优秀,View的变动,会自动反应到ViewModel上,反之亦然。目前JS前端框架AngularJS也是采用这种设计模式。

MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点

1. 低耦合: 视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。

2. 可重用性: 可以把一些视图逻辑放在一个ViewModel里面,让很多View重用这段视图逻辑。

3.独立开发: 开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xml代码。

4. 可测试: 界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。

希望对MVVM有更进一步了解的同学可以看看这篇文章: https://www.codeproject.com/kb/wpf/wpfmvvmquickstart.aspx

作者从MVVM的模式介绍到数据绑定、消息通知、命令等几个主要方面都有详细的说明。

如果你目前正在进行微软的 WPF 、Windows Phone、Windows 8、SilverLight相关项目的开发,我先很有必要了解一下MVVM Light框架。

它轻量(相对于Prism),专注(仅负责MVVM架构模式的实现,没有其他多余的组件),高效(使用简易,省时减力),能够帮助你更好的开发你的应用。

MVVMLight的作者Laurent Bugnion 是个微软MVP,这个是MVVMLight的官网: http://www.mvvmlight.net/ ,上面有详细的介绍和视频文档,

同时作者还将代码开源到Codeplex上面: http://mvvmlight.codeplex.com/ ,有兴趣的同学可以下载来了解下。

一、MVVM 和 MVVMLight介绍MVVM是Model-View-ViewModel的简写。类似于目前比较流行的MVC、MVP设计模式,主要目的是为了分离视图(View)和模型(Model)的耦合。它是一种极度优秀的设计模式,但并非框架级别的东西,由MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构。立足于原有MVP框架并且把...
1、什么是 MVVM MVVM ,是Model-View-ViewModel的简写,是M-V-VM三部分组成。它本质上就是MVC 的改进版。 MVVM 就是将其中的View 的状态和行为抽象化,其中ViewModel将视图 UI 和业务逻辑分开,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。 MVVM 采用双向数据绑定,view中数据变化将自动反映到viewmodel上,反之,model中数据变化也将会自动展示在页面上。把Model和View关联起来的就是ViewM.
4.视图模型(ViewModel)是 mvvm 模式的核心,它是连接 view 和 model 的桥梁。它有两个方向: 一是将模型(Model)转化成视图 (View),即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。 ​ 二是将视图 (View)转化成模型(Model),即将所看 ViewModel:视图模型层,用来处理Model层和View层的交互 在 MVVM 框架中,将View层的状态和行为抽象化,视图 UI 和业务逻辑分开,ViewModel层通过双向绑定,把View层和Model层联系起来。ViewModel会自动的来处理这些事情 二、 MVVM 的优点 MVVM 模式和MVC模式一样,目的是分离视图(View)和模型( mvvm 架构是继mvc架构后衍生出的一个新的架构思想,在平时工作过程中很多同学都是把 mvvm 和dataBinding混为一团,只要被问到什么是 mvvm 就回答:“ mvvm 就是dataBinding”。其实这种理解是错的。它本质上就是MVC 的改进版。 MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。本文就针对 mvvm 阐述下个人的理解,有不足支出多多谅解。 一、什么是 mvvm mvvm 即 model-viewModel-view 的缩写,view层的布局控件和m
1,到底有哪些开源 MVVM 框架?   前面介绍了WPF的基本概念和一些相关知识,我们了解到开发WPF应用程序可以使用现成的框架和模式,最为合适的莫过于时下正热的 MVVM 模式,所以这里我们也列出针对 MVVM 模式的已有开源框架:   上面除了WPFToolKit和MEF之外都是一些常用的 MVVM ...
MVVM 是Model-View-ViewModel的简写 它本质上是MVC 的改进版 MVVM (Model-View-ViewModel)框架的由来是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架 2、 MVVM 优点 MVVM 模式和MVC模式一样,主要目的是分离视图(View)和模型(Model)...
使用WPF+ Mvvm 开发一年多,期间由于对 Mvvm 模式的理解不足,遇到了很多问题,也绕了很多弯子;网上提供的 Mvvm 的示例比较简单,实际项目中的需求也各种各样。不过经过几个项目,也有了一些对 Mvvm 模式的理解: 1. Mvvm 是什么, Mvvm 是怎么来的? Mvvm 模式广泛应用在WPF项目开发中,使用此模式可以把UI和业务逻辑分离开,使UI设计人员和业务逻辑人员能够分工明确。 Mvvm 模式是根...
简说 MVVM mvvm 拆分表示 ​ MVVM 可分为 M( Model(模型) ), V( View(视图)), VM( ViewModel (模型视图)),这个结构是不是特别像JAVA的MVC结构 MVC的结构是M( Model(模型) ) V( View(视图) ) C( Controller(控制器) ) Model(模型) 是应用程序中用于处理应用程序数据逻辑的部分。 通常模型对象负责在数据...
### 回答1: PRISM 是一种用于构建 WPF 和 Silver light 应用程序的框架。它提供了一组工具和库,用于构建可重用、可维护和可测试的应用程序。其中包括模块化、命令、事件和导航等功能。 MVVM Light 是一个轻量级的 MVVM 框架。 MVVM (Model-View-ViewModel) 是一种用于构建 Windows Presentation Foundation (WPF) 和 Silver light 应用程序的架构模式。 MVVM Light 提供了一组简单易用的工具和库来帮助开发人员使用 MVVM 模式构建应用程序。 ### 回答2: PRISM和 MVVM Light 都是用于构建软件应用程序的框架,尤其是面向WPF和Silver light 应用程序的框架。 PRISM是一个由微软开发的轻量级框架,旨在帮助开发人员构建灵活、可扩展和可组合的应用程序。它通过使用模块化的方式来组织应用程序,将各个功能模块分割为独立的部分,使得开发人员可以独立地开发、测试和维护每个模块。PRISM还提供了一套强大的命令和事件系统,以及易于使用的导航和通信机制,帮助开发人员解耦应用程序中的各个部分。 MVVM Light 是由Laurent Bugnion开发的一个开源框架,专为 MVVM (Model-View-ViewModel)设计模式而设计。 MVVM Light 提供了一套简洁而强大的工具和库,帮助开发人员快速实现 MVVM 模式。它提供了数据绑定、命令绑定和消息传递等基本功能,同时还提供了一些额外的扩展功能,如消息总线和IOC容器。 MVVM Light 的设计哲学是简化开发过程,提供一种高效的方式来开发和测试应用程序,同时保持代码的可维护性和灵活性。 综上所述,PRISM和 MVVM Light 都是非常有用的框架,可以帮助开发人员构建高效、可扩展和可维护的应用程序。它们在设计理念和功能上有所不同,开发人员可以根据自己的需求和技术偏好选择适合自己的框架。 ### 回答3: Prism和 MVVM Light 都是用于构建面向对象的(WPF、Silver light 、UWP、Xamarin、Windows Forms等)应用程序的开发框架。 Prism是一个由微软基宋体研发的开源项目,旨在帮助开发人员开发可扩展、灵活且易于维护的应用程序。Prism遵循了模块化设计和 MVVM (Model-View-ViewModel)架构模式。它提供了一些有用的功能,如导航管理、事件聚合、依赖注入(DI)等。通过使用Prism,开发人员可以更好地组织和分离应用程序的不同模块,使得代码更易于编写和测试。Prism还提供了一套强大的工具和类库,以简化应用程序的开发过程。 相比之下, MVVM Light 是一个开源的 MVVM 工具包,由Laurent Bugnion开发。它被设计用于简化 MVVM 模式开发的过程。 MVVM Light 提供了许多有用的工具和类,如ViewModel基类、命令绑定、消息传递等。它还集成了依赖注入容器(如SimpleIoc),使得开发人员可以更轻松地管理应用程序中的依赖 关系 。 Prism和 MVVM Light 都有自己的优点和适用场景。Prism适用于大型、复杂的应用程序,它提供了丰富的功能和工具来管理应用程序的不同模块和功能。 MVVM Light 则更适合于小型、简单的应用程序,它提供了一个简单而高效的方式来实现 MVVM 模式。 总的来说,Prism和 MVVM Light 都是非常优秀的开发框架,可以帮助开发人员更好地组织和开发可维护的应用程序。选择适合自己项目需求和团队技术栈的框架是非常重要的。