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 时下液晶面板与液晶电视技术已经达到炉火纯青的境界,并已经成为大屏幕平 ...
随机推荐
- 浅析为什么 char 类型的范围是 : -128~+127
在 C 语言中. signed char 类型的范围为 -128~127,每本教科书上也这么写.可是没有哪一本书上(包含老师)也不会给你为什么是 -128~127,这个问题貌似看起来也非常easyea ...
- HDU 5310 Souvenir
Souvenir Accepts: 901 Submissions: 2743 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262 ...
- 3.c语言结构体成员内存对齐详解
一.关键一点 最关键的一点:结构体在内存中是一个矩形,而不是一个不规则形状 二.编程实战 #include <stdlib.h> #include <stdio.h> stru ...
- display的几种常用取值
display的取值有很多种,下面列出比较常用的几种取值,还有其它的少用的值没有列出来: 1.none 此元素不会被显示,并且不占据页面空间,这也是与visibility:hidden不同的地方,设置 ...
- TabLayout禁止选择
项目中有个页面上面是TabLayout下面是Listview,选择TabLayout的选项卡更新下面Listview里面的数据,在请求的时候想禁用TabLayout选项卡来避免用户频繁点击选项卡造成L ...
- links[v1]
justep core java Spring Boot ui5 template spring Cross-origin resource sharing 统一异常处理 数据库连接池的选择 Drui ...
- mybatis-generator-core快速生成实体类和Mapper
日常使用Mybatis少不了和实体类和 Mapper 打交道.除了我们手写来实现,还可以使用 mybatis-generator-core 来快速生成 实体类和 Mapper. 步骤如下: 1.下载 ...
- Generational GC (Part one )
目录 什么是分代垃圾回收 对象对的年龄 新生代对象和老年对象 Ungar的分带垃圾回收 堆的结构 记录集 写入屏障 对象的结构 分配 新生代GC 幸存空间沾满了怎么办? 老年代GC 优缺点 吞吐量得到 ...
- who---显示目前登录系统的用户信息
who命令是显示目前登录系统的用户信息.执行who命令可得知目前有那些用户登入系统,单独执行who命令会列出登入帐号,使用的终端机,登入时间以及从何处登入或正在使用哪个X显示器. 语法 who(选项) ...
- 【DevExpress】GridControl添加按钮列并添加按钮事件
在GridControl中添加按钮列的步骤如下: 1. 把列的ColumnEdit属性设置为RepositoryItemButtonEdit 2. 把TextEditStyle属性设置为HideTex ...