WPF初识--MVVM

最近经历了原公司的变更,回老家呆了两个月,回到深圳要开始一段新的工做旅程了。最近找工做的时候发现很多.Net的工做是关于WPF客户端的,就又从新买了本刘铁锰大神的WPF的书,之因此说从新,由于从原公司离开的时候把两本WPF的书送给同事了。css

可是学了一部分之后发现WPF真的仍是很不错的一项技术,暂且不讨论.NET的生态(生态跟技术的优劣不能彻底划等号)。微软算是比较早提出MVVM思想的框架。html

今天就暂且把本身看过的内容的一部分作个记录,为本身作一个阶段的总结吧。如今的工做中可能用不到WPF,之后也可能用不到。前端

 

如下描述仅限于我的最近来自B站刘铁猛的视频资料和关于他的WPF书籍的一些整理,欢迎指正。如后续有其它心得就随时整理。node

咱们先从一个简单的demo谈起.web

当咱们建立一个WPF程序后,会有一个文件MainWindow.xaml和它对应的代码后置文件.咱们先从这两个文件提及.windows

Mainwindow.xaml:当程序启动时依托于App.xaml来加载Mainwindow.xaml来执行。后端

对应的后端代码类MainWindow.xaml.csapp

 WPF中的MVVM框架

咱们主要经过一个简单地demo去体验一下WPF的MVVM.less

经过MVVM咱们能够实现前端和后端的解耦.也能够更方便的切换前端的UI而不须要更改后台代码。

首先放上代码的demo,若是感兴趣能够任意下载.

连接:https://pan.baidu.com/s/1RIX6gcUCVCNGqi7vdX5SIg
提取码:1314

目录结构以下,由于咱们这个例子只是一个demo,Model和View文件夹并无内容,咱们只是为了简单说明MVVM.

程序运行结果呈现是这样的:

其中AddCommand和DivideCommand是属于咱们自定义的一个类型DelegateCommand,这个类型最主要是咱们继承了一个ICommand接口并实现Execute方法.以便实现按钮的点击事件.

三个数据属性在页面值发生变化时会触发RaisePropertyChange方法,该方法在咱们的自定义类NoticeObject中,该类继承自接口INotifyPropertyChange,并含有一个事件属性PropertyChanged,实现数据的双向绑定实际上就是经过此事件来通知Binding实现.

最后咱们就能够在利用组件的属性设置数据的双向绑定,和响应的触发操做.

 

 而后若是想让先后端属性关联起来,咱们必须制定一个上下文,即这些属性和操做去匹配的位置.

 夜已深,疫情也致使了上半年的养肥增膘.须要开启锻炼计划了,后续会再整理以前看过的另外一个更复杂的WPF的例子以及一些其它资料.

 

索性就在这里把第二个复杂点的例子粘上来,

也是来自于WPF大神刘铁猛的示例.

我简单的描述下.

连接:https://pan.baidu.com/s/1nbOLFF_TE7gnT8dV9b5CVw
提取码:1314

代码最终运行效果以下:

其实这个demo思想仍是跟第一个例子同样,最主要不一样的有几个地方:

(1)完善了Model类:

 

 

(2)在上一个demo中的自定义类DelegateCommand换成了命名空间Microsoft.Practices.Prism.Commands下的类DelegateCommand

上一个demo中的NotificationObject换成了命名空间Microsoft.Practices.Prism.ViewModel中的NotificationObject.

       关于WPF我觉着比较重要的点就是怎么根据业务场景去定义Model和ViewModel(MVVM以数据驱动开发),Model更多的与对象直接相关,是现实世界实物的抽象;而ViewModel更多的是与程序运行界面相关,是界面属性与功能的抽象.

 

后续:到今天是9.21号,抽空看了书中的系统学习XAML语法/深刻浅出话Binding/深刻浅出话属性几节,打算再也不看下去了,实在提不起兴趣学.NET Framework的闭源框架了,一直在学术而学不得道,就此告别吧。

相关文章
相关标签/搜索