一、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
都是非常优秀的开发框架,可以帮助开发人员更好地组织和开发可维护的应用程序。选择适合自己项目需求和团队技术栈的框架是非常重要的。