学习网站建设的是什么专业,合肥网站建设 k,做暧网站,电脑装机网站近年来#xff0c;随着WPF在生产、制造、工控等领域应用越来越广泛#xff0c;对WPF的开发需求也在逐渐增多#xff0c;有很多人不断的从Web、WinForm开发转向了WPF开发。
WPF开发有很多新的概念及设计思想#xff0c;如数据驱动、数据绑定、依赖属性、命令、控件模板、数…近年来随着WPF在生产、制造、工控等领域应用越来越广泛对WPF的开发需求也在逐渐增多有很多人不断的从Web、WinForm开发转向了WPF开发。
WPF开发有很多新的概念及设计思想如数据驱动、数据绑定、依赖属性、命令、控件模板、数据模板以及MVVM模式等等与传统的WinForm、ASP.NET WebForm开发有很大差异。
下面将简述WPF开发中MVVM的设计思想以及应用。 一、为什么要用MVVM
传统WinForm开发的特点如下
1一般采用事件驱动也即用户点击事件触发对应的事件
2通过唯一标识符获取页面上用户输入的数据进行业务逻辑处理
3用户输入(User Interface)和业务逻辑(Business)是紧密耦合在一起的无法做到分离
4随着项目业务不断复杂化这种高度耦合会出现前后端分工不明确工作无法拆分的现象 因此分层如MVC、MVVM前后端分离就成为必须面对的问题。
二、什么是MVVM
MVVM是Model-VIew-ViewModel的简称顾名思义模型-视图-视图模型是一种用于解耦用户界面与业务逻辑的一种设计模式。借助于MVVM可以在XAML中以声明方式定义UI将UI使用数据绑定标到包含数据和命令的其它层。数据绑定提供数据和结构的松散耦合使得UI和链接的数据保持同步同时可以将用户输入路由到相应的命令。具体如下图所示 1、View用户界面主要用于向使用者展示信息并接收用户输入的信息数据绑定及响应用户的操作Command
2、ViewModel用户视图业务逻辑主要处理客户请求以及数据呈现
3、Model数据模型作为存储数据的载体是一个个具体的模型类通过ViewModel进行调用但在小型项目中Model并不是必须的
4、IService数据接口数据访问服务用于获取各种类型数据的服务。数据的形式有很多种如网络数据、本地数据、数据库数据但在ViewModel调用时都统一封装成了Service。在小型项目中IService数据接口也不是必须的不属于MVVM的范畴
5、上图中DataBase、Network、Local等标识不同的数据源形式并不属于MVVM的范畴。
三、实现MVVM的前提条件
1、属性变更他通知在MVVM思想中由WinForm的事件驱动转变成了数据驱动。在C#中普通的属性并不具备变更通知功能要实现变更通知功能必须要实现INotifyPropertyChanged接口
2、绑定命令在WPF中为了解决事件响应功能之间的耦合提出了绑定命令思想即命令可以以绑定的方式与控件建立联系绑定命令必须实现ICommand接口
在上述两个条件都满足后如何将VIewMode中的具备变更通知的属性和命令与View中的控件关联起来呢答案是绑定Binding。 当View层的数据控件和具备通知功能的属性进行Binding后Binding就会自动侦听来自接口的PropertyChanged事件进而达到数据驱动UI的效果可为“一桥飞架通南北天堑变通途”。
四、MVVM实例
为了进一步感受MVVM的设计思想验证上述的理论知识以实例进行说明。本实例的项目架构如下所示