WPF MVVM模式

简介: WPF MVVM模式

什么是MVVM模式,Model(模型)-View(视图)-ViewModel(视图模型)

先来讲MVC模式,模型-视图-控制器,相信大多数人都用过原理无非是:

页面产生某个请求,先找到页面对应的控制器,然后触发控制器的方法,控制器去模型调取数据拿回来,再返回给相应的视图,最后呈现页面。

MVVM模式原理类似MVC,只不过中间的不叫控制器了叫视图模型,功能也比Controller复杂了一些,原因就多继承了一个监听接口。

流程:

  1. 用户点击View某个按钮

学过Winform都知道,点击Button有Click事件,这个你暂且把它当作事件(指令)好了,你当点击保存按钮会触发SaleCommand指令这是你自己在后台定义的,Command="{Binding SaleCommand}"的意思就是绑定的指令是SaleCommand。

  1. View点击之后保存触发SaleCommand,这就传到了ViewModel

类似于Winform,在点击事件里写你要的方法。这里同样指定了方法是OnSaleCommand。然后执行方法,我这里写的sql语句,实现数据库更新,业务大了不可能每个页面都写SQL,就需要用到接口、IOC等等,实现解耦。

  1. 保存到结果之后,会将结果返回,比如一个list,但是这个Model继承了一个INotifyPropertyChanged接口,这个接口是干嘛用的呢,用来监测属性的变化,也是实现双向绑定必须继承的接口。当我Model里某个字段值发生变化,Set会触发,将结果展示在页面上,同样页面发生变化,也会将值传给后台。

  1. 类似于Winform的GridView绑定数据源是this.gridView.ItemSourse=数据源。WPF中也是一样。

  1. EquipBoxs就是数据源,但后台怎么赋值的呢,在ViewModel中,定义了一个动态集合,跟list差不多。但是这个动态集合是双向绑定的,页面变化后台也就变了,原因也是因为实现了INotifyPropertyChanged接口。

  2. 当页面发生改变时自动获取属性值,然后通过服务层修改到数据库。查询的时候也可以将查到的list集合,转化成ObservableCollection动态集合,然后就自动更新了。

总的来说,利用数据驱动页面的原理就是对数据进行了监听,只要有一方改变,另一方也随之变化,View和ViewModel都是通过数据和命令的绑定联通的,这样View和ViewModel关联性就不大,这就是MVVM模式的好处。

相关文章
|
8月前
|
设计模式 开发框架 前端开发
深入理解WPF中MVVM的设计思想
近些年来,随着WPF在生产,制造,工业控制等领域应用越来越广发,很多企业对WPF开发的需求也逐渐增多,使得很多人看到潜在机会,不断从Web,WinForm开发转向了WPF开发,但是WPF开发也有很多新的概念及设计思想,如:数据驱动,数据绑定,依赖属性,命令,控件模板,数据模板,MVVM等,与传统WinForm,ASP.NET WebForm开发,有很大的差异,今天就以一个简单的小例子,简述WPF开发中MVVM设计思想及应用。
61 0
|
9月前
|
前端开发
WPF-Binding问题-MVVM中IsChecked属性CommandParameter转换值类型空异常
WPF-Binding问题-MVVM中IsChecked属性CommandParameter转换值类型空异常
87 0
|
10月前
|
前端开发 算法 JavaScript
走进WPF之MVVM完整案例
走进WPF之MVVM完整案例
154 0
|
前端开发 C# 图形学
【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入
前言:在C/S架构上,WPF无疑已经是“桌面一霸”了。在.NET生态环境中,很多小伙伴还在使用Winform开发C/S架构的桌面应用。但是WPF也有很多年的历史了,并且基于MVVM的开发模式,受到了很多开发者的喜爱。
563 0
【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入
|
前端开发 C# 数据库
WPF MVVM系统入门-下
本文详细讲解WPF,MVVM开发,实现UI与逻辑的解耦。
|
前端开发 数据可视化 C#
WPF MVVM系统入门-上
本文详细讲解WPF,MVVM开发,实现UI与逻辑的解耦。
|
前端开发 C#
WPF MVVM 如何在 ViewModel 中关闭界面窗口
WPF MVVM 如何在 ViewModel 中关闭界面窗口
|
前端开发 C#
WPF 之 数据与命令绑定 (MVVM方式)
WPF 之 数据与命令绑定 (MVVM方式)
160 0
WPF 之 数据与命令绑定 (MVVM方式)
|
23天前
|
C# 开发者 Windows
基于Material Design风格开源、易用、强大的WPF UI控件库
基于Material Design风格开源、易用、强大的WPF UI控件库