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模式的好处。

相关文章
|
前端开发 C# 开发者
WPF开发者必读:MVVM模式实战,轻松构建可维护的应用程序,让你的代码更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,MVVM(Model-View-ViewModel)模式通过分离关注点,提高了代码的可维护性和可扩展性。本文详细介绍了MVVM模式的三个核心组件:Model(数据模型)、View(用户界面)和ViewModel(处理数据绑定与逻辑),并通过示例代码展示了如何在WPF项目中实现MVVM模式。通过这种模式,开发者可以更高效地构建桌面应用程序。希望本文能帮助你在WPF开发中更好地应用MVVM模式。
929 1
|
设计模式 前端开发 C#
WPF 项目中 MVVM模式 的简单例子说明
本文通过WPF项目中的加法操作示例,讲解了MVVM模式的结构和实现方法,包括数据模型、视图、视图模型的创建和数据绑定,以及命令的实现和事件通知机制。
|
C# 微服务 Windows
模块化革命:揭秘WPF与微服务架构的完美融合——从单一职责原则到事件聚合器模式,构建高度解耦与可扩展的应用程序
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中借鉴微服务架构思想,实现模块化设计。通过将WPF应用分解为独立的功能模块,并利用事件聚合器实现模块间解耦通信,可以有效提升开发效率和系统可维护性。文中还提供了具体示例代码,展示了如何使用事件聚合器进行模块间通信,以及如何利用依赖注入进一步提高模块解耦程度。此方法不仅有助于简化复杂度,还能使应用更加灵活易扩展。
419 0
|
前端开发 C# 设计模式
“深度剖析WPF开发中的设计模式应用:以MVVM为核心,手把手教你重构代码结构,实现软件工程的最佳实践与高效协作”
【8月更文挑战第31天】设计模式是在软件工程中解决常见问题的成熟方案。在WPF开发中,合理应用如MVC、MVVM及工厂模式等能显著提升代码质量和可维护性。本文通过具体案例,详细解析了这些模式的实际应用,特别是MVVM模式如何通过分离UI逻辑与业务逻辑,实现视图与模型的松耦合,从而优化代码结构并提高开发效率。通过示例代码展示了从模型定义、视图模型管理到视图展示的全过程,帮助读者更好地理解并应用这些模式。
474 0
|
前端开发 开发者 C#
WPF开发者必读:MVVM模式实战,轻松实现现代桌面应用架构,让你的代码更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,MVVM(Model-View-ViewModel)模式通过分离应用程序的逻辑和界面,提高了代码的可维护性和可扩展性。本文介绍了MVVM模式的三个核心组件:Model(数据模型)、View(用户界面)和ViewModel(处理数据绑定和逻辑),并通过示例代码展示了如何在WPF项目中实现MVVM模式。通过这种方式,开发者可以构建更加高效和可扩展的桌面应用程序。
873 0
WPF/C#:程序关闭的三种模式
WPF/C#:程序关闭的三种模式
320 3
WPF/C#:程序关闭的三种模式
WPF/C#:程序关闭的三种模式
345 0
|
设计模式 前端开发 C#
WPF/C#:理解与实现WPF中的MVVM模式
WPF/C#:理解与实现WPF中的MVVM模式
1461 0
|
设计模式 开发框架 前端开发
深入理解WPF中MVVM的设计思想
近些年来,随着WPF在生产,制造,工业控制等领域应用越来越广发,很多企业对WPF开发的需求也逐渐增多,使得很多人看到潜在机会,不断从Web,WinForm开发转向了WPF开发,但是WPF开发也有很多新的概念及设计思想,如:数据驱动,数据绑定,依赖属性,命令,控件模板,数据模板,MVVM等,与传统WinForm,ASP.NET WebForm开发,有很大的差异,今天就以一个简单的小例子,简述WPF开发中MVVM设计思想及应用。
352 0
|
前端开发
WPF-Binding问题-MVVM中IsChecked属性CommandParameter转换值类型空异常
WPF-Binding问题-MVVM中IsChecked属性CommandParameter转换值类型空异常
322 0