WPF和WinForm的区别, 数据驱动与事件驱动的优势对比
Winform中针对界面的元素进行操作, 所有业务都关联在当前窗口的后台, 而在此之前, 无奈你是双击事件的添加方式、还是后台绑定事件的方式,
你都需要给每个元素一个固定规范的名称, 然后进行相关的数据操作。这种方式称之为事件驱动型。
WPF的不同之处:
1. WPF不仅仅在支持原生的Winform旧模式的操作下,升级了一种全新的模式,也是就是MVVM模式, 不再为每个元素添加固定的名称, 然后通过后台进行事件进行业务代码编写。
2. 一套扩展能力超强的UI界面, 与早期的GDI+/GDI不同。WPF是基于DirectX引擎的,支持GPU硬件加速,在不支持硬件加速时也可以使用软件绘制。
高级别的线程绘制可以提高使用者的体验。自动识别显示器分辨率并进行缩放。
3. 有诸多的新功能,诸如: 样式、触发器、命令、动画、模板 。
Winform模式带来的常见的开发问题:
1.为了满足winform用户界面的需求, 所以也自然诞生了很多公司或者个人为其开启一套经常UI的统一处理的控件, 如市面上常见的有DevExpress 、DotenetBar 等等。
所以自然就暴露出了新的问题, 使用了新的控件、那么自然会有一套新的数据获取方式、又需要去适应新的整套开发方式、而使用新的控件只是为了满足winform界面不丰富、或者更加强大的功能。
2.暂且不考虑第三方控件带来的新的问题、winform本身的开发模式、就存在着天然的缺陷, 举个例子, 按照常规的方式我们给一个winform控件进行数据绑定操作。
按照事件驱动的模式, 他则是需要根据控件名来获取我们原始绑定的数据。 【 界面与数据完全耦合, 取数据在绑定之前已经知道数据的结构, 在获取的数据的时候却还要回过头去通过控件来找数据】
数据驱动的理念是什么?
什么是数据驱动UI呢?我们知道传统的GUI界面都是由windows消息通过事件传递给程序,程序根据不同的操作来表达出不同的数据体现在UI界面上,这样数据在某种程度上来说,
受到很大的限制。 WPF中是数据驱动UI,数据是核心,处于主动的,UI从属于数据并表达数据,是被动的。WPF数据第一,控件第二。尽管WPF中,数据处以第一, 但是对于UI来说,
WPF中的UI仍然是其出色的一部分。
WPF和WinForm的区别, 数据驱动与事件驱动的优势对比的更多相关文章
- wpf和winform的区别
深入浅出WPF(7)——数据的绿色通道,Binding(上) 水之真谛关注6人评论28117人阅读2008-06-23 02:40:00 http://liuteimeng.blog.51cto.c ...
- WPF与WinForm开发有什么区别?
转自http://hi.baidu.com/leoliu83/blog/item/1d1a4a66dcb41134aa184cfd.html WPF开发于WinForm之后,从技术发展的角度,WPF比 ...
- WPF与WinForm的抉择
微软曾经对WPF(代号Avalon)抱很大的期望——新一代的华丽用户界面平台,一统Web应用和桌面应用,Flash杀手,尽管微软口头上不承认.几年下来,WPF确实实现了当初的预期的大部分功能,但离称霸 ...
- WPF与Winform的选择
最近公司计划对ERP系统全面升级,现有的ERP是简单的bs架构系统打算改版成cs.平时如自己写一些工具,小应用都是用winform就足够.但是界面总是很难看,据了解WPF在这一方面会强一些.因为之前对 ...
- 编写高质量代码改善程序的157个建议:第87个建议之区分WPF和WinForm的线程模型
今天有时间了,继续<编写高质量代码改善程序的157个建议>的阅读,当我阅读到建议87的时候,里面的一些代码示例和文中所说的不一致了,是不是我现在用的是NetFramework 4.0的缘故 ...
- Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决
有人会说不建议Wpf中使用Winform控件,有人会说建议使用Winform控件在Wpf下的替代方案,然而在实际工作中由于项目的特殊需求,考虑到时间.成本等因素,往往难免会碰到在WPF中使用Winfr ...
- 编写高质量代码改善C#程序的157个建议——建议87:区分WPF和WinForm的线程模型
建议87:区分WPF和WinForm的线程模型 WPF和WinForm窗体应用程序都有一个要求,那就是UI元素(如Button.TextBox等)必须由创建它的那个线程进行更新.WinForm在这方面 ...
- WPF和Winform中picturebox图片局部放大
原文:WPF和Winform中picturebox图片局部放大 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangyisen0713/artic ...
- [转帖]LCD与LED的区别之背光原理与优缺点对比介绍
LCD与LED的区别之背光原理与优缺点对比介绍 http://m.elecfans.com/article/620376.html 时下液晶面板与液晶电视技术已经达到炉火纯青的境界,并已经成为大屏幕平 ...
随机推荐
- CG 内置函数 和 HLSL 内置函数
CG 内置函数 英伟达官网链接: http://http.developer.nvidia.com/Cg/index_stdlib.html absacosallanyasinatan2atanbi ...
- jsp页面中自定义标签的小演示
在实习期遇到公司的pg自定义标签了,同事要我自己自学一下 自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet.JSP标签扩展可以让你创建新的标签并且可以直接 ...
- angularjs 事件向上向下传播
<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...
- 如何将网站升级为HTTPS协议(整理)
如何将网站升级为HTTPS协议(整理) 一.总结 一句话总结: 获取证书(有免费有付费):证书是一个二进制文件,里面包含经过认证的网站公钥和一些元数据,要从经销商购买. 安装证书:证书可以放在/etc ...
- WebAPI的自动化监控和预警
Metrics.net + influxdb + grafana 构建WebAPI的自动化监控和预警 前言 这次主要分享通过Metrics.net + influxdb + grafana 构建Web ...
- Auto-Publishing and Monitoring APIs With Spring Boot--转
原文地址:https://dzone.com/articles/auto-publishing-amp-monitoring-apis-with-spring-bo If you are headin ...
- 【DNN 系列】 模块开发 8.0.1
1.创建第一个模块需要准备的东西有 https://github.com/dnnsoftware/DNN.Templates/releases/tag/1.0.1 VS 2015 插件 创建一个项目M ...
- AngularJs轻松入门(三)MVC架构
MVC应用程序架构最早于1970年起源于Smalltalk语言,后来在桌面应用程序开发中使用较为广泛,如今在WEB开发中也非常流行.MVC的核心思想是將数据的管理(Model).业务逻辑控制(Cont ...
- <Sicily>Rails
一.题目描述 There is a famous railway station in PopPush City. Country there is incredibly hilly. The sta ...
- Python内存分配器(如何产生一个对象的过程)
目录 内存分配器 Python分配器分层 第零层--通用的基础分配器 第一层--低级内存分配器 内存结构 arena pool new arena usable_arenas和unused_arena ...