• 在WPF开发中,经典的编程模式是MVVM,是为WPF量身定做的模式,该模式充分利用了WPF的数据绑定机制,最大限度地降低了Xmal文件和CS文件的耦合度,也就是UI显示和逻辑代码的耦合度,如需要更换界面时,逻辑代码修改很少,甚至不用修改。
  • WinForm开发 相比,我们一般在后置代码中会 使用控件的名字来操作控件的属性来更新UI ,而在 WPF中通常是通过数据绑定来更新UI ;在响应用户操作上, WinForm是通过控件的事件来处理 ,而 WPF可以使用命令绑定的方式来处理 ,耦合度将降低。

一、MVVM框架简介

1. 什么是MVVM?

结构模型如下:
在这里插入图片描述

  • Model: 就是系统中的对象,可包含属性和行为(就是一个class,是对现实中事物的抽象,开发过程中涉及到的事物都可以抽象为Model,例如客户,客户的姓名、编号、电话、住址等);
  • View: 就是用xaml实现的界面,负责与用户交互,接收用户输入,把数据展现给用户;
  • ViewModel: 是一个C#类,负责收集需要绑定的数据和命令,聚合Model对象,通过View类的DataContext属性绑定到View,同时也可以处理一些UI逻辑。显示的数据对应着ViewMode中的Property,执行的命令对应着ViewModel中的Command。

三者之间的关系: View对应一个ViewModel,ViewModel可以聚合N个Model,ViewModel可以对应多个View

2. MVVM的优势

MVVM的 根本思想 就是 界面和业务功能进行分离 View的职责 就是 负责如何显示数据及发送命令 ViewModel的功能 就是 如何提供数据和执行命令 。各司其职,互不影响。

  • 在实际的业务场景中我们经常会遇到客户对界面提出建议要求修改,使用MVVM模式开发,当设计的界面不满足客户时,我们仅仅只需要对View作修改,不会影响到ViewModel中的功能代码,减少了犯错的机会。
  • 随着功能地增加,系统越来越复杂,相应地程序中会增加View和ViewModel文件,将复杂的界面分离成局部的View,局部的View对应局部的ViewModel,功能点散落在各个ViewModel中,每个ViewModel只专注自己职能之内的事情。ViewModel包含了View要显示的数据,并且知道View的交互代码,所以ViewModel就像一个无形的View。
  • 使用MVVM架构具有以下 优势
  1. 易维护(低耦合) ,视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的”View”上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
  2. 灵活扩展(可重用性) ,可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑;
  3. 易测试 ,界面向来是比较难于测试的,而现在测试可以针对ViewModel来写
  4. 独立开发 ,开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xml代码。

3.MVVM的应用场景

使用MVVM框架的好处就是当前后端进行一些数据交互的时候,前端可以通过Ajax请求对后端做数据持久化,不需要刷新整个页面,只需要改动DOM里需要改动的那部分数据和内容,特别是对于移动端应用场景,刷新页面的代价太昂贵,会重新加载很多资源,虽然有些资源会被缓存,但是页面的DOM、JS、CSS都会被浏览器重新解析一遍,因此,移动端页面经常会做成SPA单页应用,在这个基础上就诞生了很多MVVM框架,如Angular、React、Vue。

  1. 针对具有复杂交互逻辑的前端应用
  2. 提供基础的架构抽象
  3. 通过Ajax数据持久化,保证前端用户体验

二、MVVM使用及示例

  1. NuGet引用MVVM框架包
    在这里插入图片描述
    引入该框架包之后, 默认会在目录下创建ViewModel层的示例代码
    在这里插入图片描述
  2. 通过 在MainViewModel中创建一些业务代码 , 将其与MainWindow.xaml 通过上下文的方式关联起来, 而MainWindow则是通过Binding的写法 引用业务逻辑的部分。

RaisePropertyChanged() 实现动态通知更新

  1. 通过set访问器更新ClassName的同时, 调用RaisePropertyChanged 方法, 界面刷新更新后的值;
    在这里插入图片描述

  2. 添加一个无参数的UpdateCommand , 并设置为 UpdateText 手动把ClassName更新为 “高三三班”:
    在这里插入图片描述

  3. UI层添加一个简单按钮, 绑定后台的UpdateCommand命令
    在这里插入图片描述

运行效果:
Alt

文章参考来源:
链接: C#架构设计-MVVM
链接: WPF自学入门 .
链接: MVVM模式简介 .
链接: WPF-MVVM框架 .

MVVM框架文章目录MVVM框架前言一、MVVM框架简介1. 什么是MVVM?2. MVVM的优势3.MVVM的应用场景二、MVVM使用及示例前言在WPF开发中,经典的编程模式是MVVM,是为WPF量身定做的模式,该模式充分利用了WPF的数据绑定机制,最大限度地降低了Xmal文件和CS文件的耦合度,也就是UI显示和逻辑代码的耦合度,如需要更换界面时,逻辑代码修改很少,甚至不用修改。与WinForm开发相比,我们一般在后置代码中会使用控件的名字来操作控件的属性来更新UI,而在WPF中通常是通过
MVVM 是Model-View-ViewModel的简写。微软的 WPF 带来了新的技术体验,如Silverlight、音频、视频、3D、动画……。这导致了软件UI层更加细节化、可定制化。同时,在技术层面, WPF 也带来了诸如Binding、DependencyProperty、RoutedEvents、Command、DataTemplate、ControlTemplate等新特性。 MVVM (Model-View-ViewModel) 框架 的由来便是MVP(Model-View-Presenter)模式与 WPF 结合的应用方式时发展演变过来的一种新型架构 框架 。它立足于原有MVP 框架 并且把 WPF 的新特性
作者本人以前是做C++的,当然很顺利的进入到WinForm,这也让我基本没有View-Model思维。学习 WPF 说白点也是因为其强大的UI,其实我忽视了很重要的一点,直到接触了 MVVM 框架 ,其实Web前后端开发已经指明了未来编程趋势,各干各的:完美的前段和强劲的后端,个人是这么认为的。 WPF 是微软视其为下一代用户界面技术,XAML的使用就是为了降低耦合度。那么我们不得不说说WinForm和WP......
至于啥是 MVVM 在此不再赘述,可以参考这位大神写的博客 : http://www.cnblogs.com/durow/p/4853729.html 在此只是搭建一个简单的 框架 , 仅供学习参考, 欢迎转载. 如有任何问题,意见或建议欢迎随时批评指正. 如有侵权请及时联系删除,谢谢. 包含的 基础 类参考如下截图,具体类的作用我会随着代码展开做简短的解释. 类图参考: 首先我创建了三个文...
WPF MVVM 框架 例程是使用 WPF 技术和 MVVM 架构模式实现的一种程序开发方案,它的主要目的是将应用程序的业务逻辑与用户界面分离。 MVVM (Model-View-ViewModel)架构模式是一种广泛应用于 WPF 开发的模式,它将业务逻辑、用户界面和数据模型分别抽象为三个独立的层,从而实现了很好的松耦合设计,使得程序代码可维护性更高,在多个程序员共同开发的情况下也能有效的降低开发的复杂度。 在 WPF MVVM 框架 例程中,一般包含了ViewModel、View、Model三个关键组件,其中ViewModel实现了业务逻辑的处理和与View的数据交互;View是用户界面,是程序的视觉形式呈现,而Model主要是数据模型和数据存储。 WPF MVVM 框架 例程的实现方式很多,最广泛应用的是利用开源库 Mvvm Light实现。在使用 Mvvm Light开发 WPF 应用程序中,可以大大降低代码的复杂度、提高代码重用性,同时可以有效地实现业务逻辑与用户界面的分离,同时减少界面逻辑的耦合度,并实现了视图状态与业务状态的分离。 总的来说, WPF MVVM 框架 例程是 WPF 开发中一种非常优秀的 框架 ,它的实现可以大大提高 WPF 程序的开发效率和代码质量。通过学习 WPF MVVM 框架 例程,在实际开发中运用 MVVM 架构模式,能够使开发者更好地开发出高质量的应用程序,提高软件的稳定性和可扩展性。