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

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   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
WPF是新的界面UI机制,比WinForm灵活,但是用习惯了WinForm的程序员,可能对WPF的一些技术比较陌生,这里用一些比喻来引导理解下WPF的MVVM特点和WPF的MVVM理解。C#的WinForm里界面...【详细内容】
2022-07-04  Tags: WPF  点击:(133)  评论:(0)  加入收藏
本文针对.net core开发环境,如何在winform和wpf等应用程序下配置数据库连接。关于如何在Core下使用DB First方式生成EF数据库代码,点击跳转原文链接。生成了数据库代码后,默认...【详细内容】
2020-11-06  Tags: WPF  点击:(621)  评论:(0)  加入收藏
最近同事在调试硬件的串口通讯功能,由于PLC暂时还没到,所以准备用USB转串口线连接在终端上,通过电脑USB口模拟串口收发功能。一开始同事下载了一款串口调试工具,发现没有自定义...【详细内容】
2020-08-20  Tags: WPF  点击:(192)  评论:(0)  加入收藏
▌简易百科推荐
本文从客户端的视角,分享客户端如何协同服务端进行接口时间的优化。Compose是什么接口性能优化对于客户端的同学来讲涉及可能不是很多,但是接口的性能对于客户端的体验影响是...【详细内容】
2022-10-20  马啟超  微信公众号  Tags:接口优化   点击:(5)  评论:(0)  加入收藏
【写在最前】我们在平时的编程学习中,经常会接触到“版本控制”这个概念。目前业界的开发团队,基本都会从 GIT 、 SVN 两种主流版本控制系统中选择一个在团队内部使用。两个软...【详细内容】
2022-10-20  5分钟IT入门   网易号  Tags:git   点击:(3)  评论:(0)  加入收藏
原创:微观技术作为后端研发同学为了几两碎银,没日没夜周旋于各种人、各种事上。如果你要想成长的更快,就要学会归纳总结,找到规律,并且善用这些规律。就比如工作,虽然事情很多、也...【详细内容】
2022-10-18  马士兵教育  今日头条  Tags:接口   点击:(5)  评论:(0)  加入收藏
大家知道,在Springboot+Spring Data Jpa的项目里,dao层只需要继承JpaRepository接口,就可以实现Mybatis中@Repository+mapper的效果,不需要任何多余的配置,就可以将dao层注入bean...【详细内容】
2022-10-17  活在信息时代    Tags:Spring Data Jpa   点击:(4)  评论:(0)  加入收藏
01常收到一些在校非计算机软件学生的提问,编程难吗?我也想学编程?编程难吗?对于这个问题,我想大多数人都会认为难,我也不例外。但难在哪里?不同的人有不同的理解,因为编程本身的维度...【详细内容】
2022-10-17  阿谊小梦  搜狐号  Tags:编程   点击:(4)  评论:(0)  加入收藏
jupyter lab作为jupyter notebook的升级版,增加了很多功能。其支持python、R、java等多种编程语言及markdown、letex等写作语言及公式输入,可以集编程与写作于一身,非常适合于...【详细内容】
2022-10-14  ruiwango  今日头条  Tags:jupyter   点击:(13)  评论:(0)  加入收藏
作者:mosun,腾讯 PCG 后台开发工程师一、虚拟内存 1.1 虚拟内存引入我们知道计算机由 CPU、存储器、输入/输出设备三大核心部分组成,如下:CPU 运行速度很快,在完全理想的状态下,存...【详细内容】
2022-10-13  腾讯技术工程    Tags:虚拟内存   点击:(7)  评论:(0)  加入收藏
语言的优劣之争从来都是个永恒的话题,也是个容易引火上身的问题,经常讨论过激就会“擦枪走火”甚至可能会引发一场铁杆粉丝之间的“战争”。如果您之前熟悉VBA,或了解一些VB语...【详细内容】
2022-10-13  小辣椒高效Office  今日头条  Tags:Python   点击:(12)  评论:(0)  加入收藏
事件背景作者所在的公司核心业务是做政府信息化软件的,就是为政府部门开发信息化系统。其中有一款信息化软件是客户每天需要使用的,并且他们面向的客户就是老百姓。某年某月,某...【详细内容】
2022-10-13  Java联盟盟主  今日头条  Tags:P0级事故   点击:(9)  评论:(0)  加入收藏
Hello,大家好,我是每天深情赚钱的程序员,姜老师~~~在最近一次的直播中,有同学问道:“如何阻止开发同学使用 TiDB ?"相信看了直播的小伙伴都有印象。这其实是一个很好的问题!从这个...【详细内容】
2022-10-12  破产码农    Tags:TiDB   点击:(9)  评论:(0)  加入收藏
站内最新
站内热门
站内头条