您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

WPF的MVVM特点、WPF的MVVM理解

时间:2022-07-04 12:09:06  来源:  作者:软件技术及人才和养生

WPF是新的界面UI机制,比WinForm灵活,但是用习惯了WinForm的程序员,可能对WPF的一些技术比较陌生,这里用一些比喻来引导理解下WPF的MVVM特点和WPF的MVVM理解。

C#的WinForm里界面窗口数据是一体的,数据相当于窗口的一个属性,这个对理解MVVM不太友好,我们换个方向,在MFC的对话框里有DDX机制DoDataExchange函数,此函数负责界面上数据和控件互相转换,触发转换需要调用UpdateData函数,从这点理解WPF的MVVM就好办了,把DDX机制比喻换个名称到MVVM里,就是数据绑定,为什么要数据绑定?xaml里的界面和cs代码文件没有直接关系,是隔离开的,有了数据绑定,才能让数据显示到界面或从界面上采集数据。数据绑定位于View和ViewModel之间,但这不是MVVM的全部。

VM,即ViewModel,里面有个消息机制,注意不是Win32开发里的消息队列机制,是ViewModel通知xaml界面部分的机制,这机制如果放到整个体系里理解,就好理解了,在WinForm的CS开发体系里,S负责数据,C显示数据,S的数据到C端也肯定是要有机制的,不可能凭空去让C端刷新。

有了数据绑定和数据交换,再加上消息通知,这就是MVVM的核心,也是WinForm和MFC对话框DDX的核心,无非是WPF下换了xaml,而WinForm里是资源文件,MFC里是rc文件。但是资源文件和rc文件再怎么扩展也不如xaml形式的灵活,xaml也是抄html+css的形式,我在VS里看xaml里控件的属性窗口,和DreamWeaver里看html元素属性窗口,有似曾相似的感觉。不过xaml属性窗口内容更多,初学者也会觉得复杂。

MVVM里的M也好理解,规范了数据形式,好处理数据。

MVVM里还有很多细节,比如服务、Mediator和视图注册等等,所以一些MVVM库也应运而生,比如MVVMLight、Prism和微软的Toolkit.mvvm,有这些库支持,开发会容易一些。



Tags:WPF   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
WPF的MVVM特点、WPF的MVVM理解
WPF是新的界面UI机制,比WinForm灵活,但是用习惯了WinForm的程序员,可能对WPF的一些技术比较陌生,这里用一些比喻来引导理解下WPF的MVVM特点和WPF的MVVM理解。C#的WinForm里界面...【详细内容】
2022-07-04  Search: WPF  点击:(442)  评论:(0)  加入收藏
C#Core下,窗体Winform和WPF如何配置数据库连接
本文针对.net core开发环境,如何在winform和wpf等应用程序下配置数据库连接。关于如何在Core下使用DB First方式生成EF数据库代码,点击跳转原文链接。生成了数据库代码后,默认...【详细内容】
2020-11-06  Search: WPF  点击:(1000)  评论:(0)  加入收藏
基于WPF的串口调试工具
最近同事在调试硬件的串口通讯功能,由于PLC暂时还没到,所以准备用USB转串口线连接在终端上,通过电脑USB口模拟串口收发功能。一开始同事下载了一款串口调试工具,发现没有自定义...【详细内容】
2020-08-20  Search: WPF  点击:(406)  评论:(0)  加入收藏
▌简易百科推荐
Meta如何将缓存一致性提高到99.99999999%
介绍缓存是一种强大的技术,广泛应用于计算机系统的各个方面,从硬件缓存到操作系统、网络浏览器,尤其是后端开发。对于Meta这样的公司来说,缓存尤为重要,因为它有助于减少延迟、扩...【详细内容】
2024-04-15    dbaplus社群  Tags:Meta   点击:(3)  评论:(0)  加入收藏
SELECT COUNT(*) 会造成全表扫描?回去等通知吧
前言SELECT COUNT(*)会不会导致全表扫描引起慢查询呢?SELECT COUNT(*) FROM SomeTable网上有一种说法,针对无 where_clause 的 COUNT(*),MySQL 是有优化的,优化器会选择成本最小...【详细内容】
2024-04-11  dbaplus社群    Tags:SELECT   点击:(3)  评论:(0)  加入收藏
10年架构师感悟:从问题出发,而非技术
这些感悟并非来自于具体的技术实现,而是关于我在架构设计和实施过程中所体会到的一些软性经验和领悟。我希望通过这些分享,能够激发大家对于架构设计和技术实践的思考,帮助大家...【详细内容】
2024-04-11  dbaplus社群    Tags:架构师   点击:(2)  评论:(0)  加入收藏
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(5)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(9)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(16)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(14)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(9)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(15)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(10)  评论:(0)  加入收藏
站内最新
站内热门
站内头条