WPF进阶之MVVM教程(一)

工控安全 1年前 (2022) admin
502 0 0
WPF进阶之MVVM教程(一)
JZGKCHINA
工控技术分享平台

尊重原创 勿抄袭

勿私放其他平台

WPF进阶之MVVM教程(一)
自写了WPF入门系列(点击学习)文章,收到很多大学生的私信,经常会问一些MVVM的问题,由于自己对MVVM也并不了解,遇到问题也是经常请朋友帮忙看看,趁着业余时间,经过一段时间得学习、开始写MVVM系列的文章,主要写一下自己对MVVM的理解,希望这不仅是对自己成长的记录,也能对同学们有所帮助。
来吧,让我们再次起航,WPF从入门到放弃,再到进阶之路!
欢迎大家在剑指工控技术群里继续讨论、共同学习!
来吧!一起学起来!WPF进阶之MVVM教程(一)WPF进阶之MVVM教程(一)WPF进阶之MVVM教程(一)

第1讲


MVVM教程(一)

首先说一下概念:
MVVM是Model-View-ViewModel的缩写,具体解释为:
  • Model:现实世界中对象的抽象结果。可以理解为数据模型,对应着一个Class。
  • View:界面。可以理解为界面要做成的样子,对应着XAML文件创作的内容。
  • ViewModel:用来实现业务逻辑。可以理解为是对Model的封装,通过一系列属性暴露Model的状态,提供给View进行显示。
其中的重点是View与ViewModel之间的交互,View中出现数据变化时会尝试修改绑定的目标,同样View执行命令时也会去寻找绑定的Command并执行。反过来,ViewModel在Property发生改变时会发个通知说“名字叫XXX的Property改变了,你们这些View中谁绑定了XXX也要跟着变啊!”,至于有没有View收到是不是做出变化也不关心。ViewModel中的Command脱离View就更简单了,因为Command在执行操作过程中操作数据时,根本不需要操作View中的数据,只需要操作ViewModel中的Property就可以了,Property的变化通过绑定就可以反映到View上。

下面实现一个小的加法计算器为例来学习一下MVVM

首先建立以下几个文件夹其中Bases放一些基类,比如NotifyBase就是放需要数据更改后发送通知的类的基类。 
WPF进阶之MVVM教程(一)
NotifyBase基类继承自INotifyPropertyChanged这个接口,按Alt+Enter引用相应的名称空间(using System.ComponentModel;)再按Alt+Enter实现接口。 
WPF进阶之MVVM教程(一)
WPF进阶之MVVM教程(一)
WPF进阶之MVVM教程(一)
为了方便使用,使用RaisePropertyChanged这个方法来对PropertyChanged进行封装,当属性的值发生改变时,来通知View。 
WPF进阶之MVVM教程(一)
同样我们需要一个CommandBase来做命令绑定,同样我们需要继承自ICommand这个接口,按Alt+Enter引用相应的名称空间(using System.Windows.Input;)再按Alt+Enter实现接口。 
WPF进阶之MVVM教程(一)
WPF进阶之MVVM教程(一)
public event EventHandler CanExecuteChanged;// 当命令可执行状态发生改变时,可激发此事件来通知其他对象。 
public bool CanExecute(object parameter)//在执行之前用来探知命令是否可被执行。
public void Execute(object parameter)//命令执行的方法。    
WPF进阶之MVVM教程(一)
这里用到Action和Func,相比delegate关键字,使用Action和Func会使代码更简洁。Action和Func两者的区别在于Action没有返回值,而Func有返回值。


新建MainWindow的ViewModel起名叫MainWindowViewModel类
继承自NotifyBase这个基类,并引入using MVVMDemo.Bases;这个命名空间
可以自己添加一个propn这个CodeSnippet(代码片段) 
WPF进阶之MVVM教程(一)
WPF进阶之MVVM教程(一)
使用propn连续按两下tab键 简化写数据属性的代码 下面建Input1,Input2,Result三个数据属性。
WPF进阶之MVVM教程(一)
WPF进阶之MVVM教程(一)
接着写命令绑定 建一个命令属性AddCommand 以及委托具体的执行方法Add 以及在构造函数中实现Add与AddCommand之间得关联。
WPF进阶之MVVM教程(一)
到此准备工作完成。



命令绑定不好理解,也不好用文字描述 感兴趣得小伙伴可以学习一下刘铁猛老师的深入浅出WPF视频 我也是按照这个视频整理的内容。

WPF进阶之MVVM教程(一)
WPF进阶之MVVM教程(一)

就这么简单!




作者简介:

曹言林:加入工控八余载,从事过单片机编程、控制柜接线、设备维修,PLC编程、上位机编程、MES实施。对各方面虽不是专家级别,也愿为工控圈添砖加瓦,贡献自己的一份力量。



WPF进阶之MVVM教程(一)

WPF从入门到放弃-回顾


  1. WPF入门到放弃(一) | 安装与创建

  2. WPF入门到放弃(二) | 初识XAML

  3. WPF入门到放弃(三)| 制作串口调试助手

  4. WPF入门到放弃(四)| 给串口调试助手列表赋值(附调试软件)

  5. WPF入门到放弃(五)| 串口的读取与写入(程序&附串口调试精灵)

  6. WPF入门到放弃(六)| 画面优化与发布(附源程序)

  7. WPF入门到放弃(七)| 常用布局控件的用法

  8. WPF入门到放弃(八)| 常用的控件(二)

  9. WPF入门到放弃(九)|  读取excel数据并写入sqlite数据库中(附免安装连接数据库工具)

  10. WPF入门到放弃(完结篇)| sqlite以及数据复用(附总源码分享)


欢迎大家在剑指工控技术群里继续讨论、共同学习!来吧!一起学起来!WPF进阶之MVVM教程(一)WPF进阶之MVVM教程(一)WPF进阶之MVVM教程(一)

1.Smart200&V90伺服系统:已更新15课

2.贝加莱直播课程:已更新30课

3.PKS快速入门:初级&中级-全

4.剑指工控经典公开课:已更新35课
5.新品推荐:已更新10课
WPF进阶之MVVM教程(一)

原文始发于微信公众号(剑指工控):WPF进阶之MVVM教程(一)

版权声明:admin 发表于 2022年10月26日 上午6:01。
转载请注明:WPF进阶之MVVM教程(一) | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...