转自
http://hi.baidu.com/leoliu83/blog/item/1d1a4a66dcb41134aa184cfd.html
WPF与WinForm开发有什么区别?
WPF开发于WinForm之后,从技术发展的角度,WPF比WinForm先进是不容置疑的。我觉得WPF相比于WinForm有下面的一些较好的特性:
解决Window Handle问题
在Windows GDI或WinForm开发中复杂的GUI应用程序,会使用的大量的控件,如Grid等。而每个控件或Grid cell都是一个小窗口,会使用一个Window handle,尽管控件厂商提供了很多优化办法,但还是会碰到Out of Memory或"Error Create Window handle",而导致程序退出。
WPF彻底改变了控件显示的模式,控件不在使用窗口,也就不会占用Window handle。理论上,如果一个WPF只有一个主窗口的话,WPF只会使用一个Window handle(如果忽略用于Dispatcher的隐藏窗口的话)。所以WPF GUI程序不会出现Window handle不够用的情况。
多线程的处理
在WinForm程序开发时,最头疼的一个问题就是,worker线程修改控件的属性而导致程序崩溃,而且这种非法操作并不是每次都失败。WinForm控件提供了InvokeRequired属性来判断当前线程是不是控件创建线程。问题是当控件树很深是,这个属性会比较慢。
WPF开始设计的时候,就考虑到了多线程的问题。大部分的WPF类都继承于DispatcherObject。DispatcherObject实际就是对Dispatcher的一个简单封装。Dispatcher提供了类似InvokeRequired的方法(CheckAccess)。这个方法只是比较线程的ID,所以会很快。另外,Dispatcher提供了优先队列,异步调用,Timer等功能,简化了开发多线程GUI程序。
控件的Composition
在WinForm如果要实现一个有Checkbox的下拉菜单,将不得不处理复杂的Window消息。而通过WPF控件的Content Model和Layout系统,WPF控件可以包括任何类型的控件,甚至.Net CLR对象。很多现代的控件厂商也提供了Composition的控件,实现方法和WPF的Content模型也比较相似。WPF开发团队应该借鉴了Infragistics的很多想法。有了这个基础,开发新的WPF控件更加简单了。
个人觉得XAML应该是WPF中比较划时代的东东。通过XAML,我们可以用文本的方式描述复杂的Object Graph。这个想法在VB中就有了,不过XAML更简化,以便于使用工具来生成XAML。通过Command,Routing Event等机制,界面设计人员和程序员有比较清楚的界限。
Dependency Property
在WinForm开发中,经常碰到的问题就是一个控件的值变了,其他控件也会跟着改变。解决办法,要不是通过写代码,要不是通过数据绑定,前者是界面和代码没法分开,后者还不够灵活。而WPF在这方面通过XAML可以简单的把相关的属性联系起来,通过Extension可以实现复杂的绑定关系。
总的来说,我觉得WPF应该是GUI发展的一个延续,原来GUI中复杂的东西,现在通过简单的文本就可以实现。
微软曾经对WPF(代号Avalon)抱很大的期望——新一代的华丽用户界面平台,一统Web应用和桌面应用,Flash杀手,尽管微软口头上不承认。几年下来,WPF确实实现了当初的预期的大部分功能,但离称霸...
来自:
felixsyan的专栏
1、结果来说,属于两套界面渲染方式。一个是对传统windows界面元素的封装,通过gdi绘制。另一个是全新的dx渲染绘制的界面,也脱离了对传统windows控件的依赖,没有历史包袱,理论上可以展现更炫...
来自:
苍狼王座的博客
准备学C#,但发现它有两个分支,WinForm和WPF,该选择那一种呢? 而且我发现,《C#入门经典》这本书的第5版讲的是WinForm技术,而第6版讲的是WPF技术,是不是说WPF才是趋势呢?
最近要开发一个桌面的工具,开发环境为vs2010, 界面部分采用WPF还是传统的Winform呢? 1. 最终生成的可执行文件,哪个内存占用更小些? 2. WPF在界面效果上究竟有多大的优势? 大家一
收到了一封学生的邮件: =========================== 金老师您好: 最近在学C#.NET,基本语法学习的差不多了,接下来准备学习图形界面设计部分。但是我目前对于.NET...
来自:
weizhiai12的专栏
Winform每个窗口和内部控件都有窗口句柄获取方法:this.HandleWPF窗口和内部控件共用一个窗口句柄获取方法:newWindowInteropHelper(this).Handle 渲染方...
来自:
狂奔之林的博客
WPF对比WinForm简单实例,这个例子主要展示同一个需求用WinForm和WPF分别进行实现,通过这个例子,我们可以看到两者之间的区别和联系,同时也可以对我们的项目选型带来一定的参考作用
微软曾经对WPF(代号Avalon)抱很大的期望——新一代的华丽用户界面平台,一统Web应用和桌面应用,Flash杀手,尽管微软口头上不承认。几年下来,WPF确实实现了当初的预期的大部分功能,但离称霸...
来自:
风雨同行
作为Windows桌面UI开发的两大.net开发库,WinForm和WPF同时存在着。之所以功能如此重合的两个库同时存在,是因为两者的底层差异非常大,WinForm底层依赖于传统的Win32API...
来自:
Andrewniu的博客
WINDOWS窗体应用程序与WPF应用程序的区别?用WPF更容易做的漂亮感觉有以下几个大区别:WPF的线程模型和winform的线程模型不同WPF到处用到数据绑定,winform在列表中才用的多WPF...
来自:
Violinlins
我用下来,感觉有以下几个大区别:WPF的线程模型和winform的线程模型不同WPF到处用到数据绑定,winform在列表中才用的多WPF支持3D,winform本身没有,需要引入托管的DXWPF有现...
来自:
fucong920618717的博客
WPF,WCF 如雷贯耳早听说WPF,WCF大名,但是就是一直没有去了解她……今天突然想去看看她长啥样? 主要是给自己留个笔记,顺便比较下WPF和Winform之前的区别1.什么是WPF?有什么用...
来自:
weixin_34055787的博客
最近找这方面的工作,所以在使劲的学习,之前不是搞这个的,不过生活所迫,然后我联系上了投简历公司的一个员工,(我本来只会基础的c# winform)他告诉我公司里都是用wpf,于是我又同时开始学习wpf
对于异步更新UI这个问题, 在winform里的通常做法是继承EventArgs类做个更新界面用的参数类,然后通过委托来实现更灵活的设计。 举个例子: 比如按一个按钮,按钮绑的方法里会调其他方法,而其
基于.net core的桌面应用框架(WPF、WinForm)已开源,预览版已发布,对.net的应用会有什么影响呢?且目前微软股价已经重新攀升到顶峰,与Apple、Amazon轮流坐庄最高市值,会不会
感觉是好多人对WPF的看法还停留在XP+.Net Framework 3.5的年代,在百度里搜这两个关键字,第一个帖子居然是选择winform还是WPF这个12年的帖子。 随着windows 7的普及
1Winform架构该界面框架现在可谓如日中天,使用及其方便,直接拖拽控件。但非常不幸的是,微软正在把该架构送入坟墓。2WPF架构微软2006年引入,非常成熟的界面框架,真正实现了界面代码(inter...
来自:
Spo.Tian 的博客
看了一些WPF的文章,感觉开发一般的调用数据库的客户端,Winform方便很多! 现阶段,利用C#开发桌面应用程序,Winform还是比WPF方便很多吗! WPF以后的发展真的能像微软说的那样好吗?
介绍Winform程序如何调用WPF窗体。工具/原料 以VS2013为例。 方法/步骤 创建Winform应用程序项目。 打开VS2013,文件->新建->项目...,新建...
来自:
bruce135lee的专栏
WinForm在Windows中,诸如窗体绘制等功能由GDI(图形设备接口)实现,放在操作系统内核中。WindowsForms在底层使用的是GDI+。GDI+是GDI的“面向对象包装”,使用C++实现...
来自:
Peter-H
最近项目要上线,处于紧张的测试中,一整天都在盯着电脑屏幕上那些晃动的波形做测试,excel中记满了密密麻麻的测试数据,看得眼睛都疼了。把眼睛从电脑屏幕上移开,实在是看不下去了。可上班时间,又不能无所事...
来自:
BeiLinYu的专栏
2012年6月,我曾准备连载这个话题闲话WinFrom与WPF,最后半途而废。此时想起,算是零星整理,毕竟如我等从WinForm转到WPF的大有人在,一个框架的学习成本太高,写在这里,对自己算是一个备...
来自:
神棍工作室——南琦的博客
公司目前想做一个小型的桌面应用程序,功能很少,只有几个页面,找到我们WP开发组,因为wp和wpf很类似,所以想用wpf试试 然后,问题来了,由于这个应用是面向很多电脑小白,其中很多是xp用户,他们一般
在WinForm中是可以使用WPF中的控件(或者由WPF创建的自定义控件)1.新建一个winform项目;2.在解决方案上新建一个wpf项目;如图:如果有如下错误,就在winform中的引用添加Sys...
来自:
bruce135lee的专栏
将原来的winform程序中的MainForm类的构造函数权限改成public项目输出由应用程序改成类库(假设mainform.dll)添加必要的引用 System.Windows.Form...
来自:
未来软件
最近几年一直从事地图方面的工作,自主研发了WPF和Winform两个版本瓦片地图引擎。轻量级、不依赖第三库。先上一张图片展示一下吧! 产品包括服务端和客户端两部份:1、服务端主要地图图层配制和空间计算...
来自:
zbll147的专栏
步骤1:创建WinForm工程 步骤2:在刚刚创建的WinForm工程中新建或者添加现有的WPF用户自定义控件 <UserControlx:Class="wndFormTe...
来自:
bruce135lee的专栏
WPF可以用来自适应窗体大小WPF可以用AllowsTransparency="True"WindowStyle="None"两个自带属性把窗体周围边框去掉WPF可以用WindowState="Max...
来自:
qq_41078703的博客
winform与WPF在多线程上的改进性能没大区别,WPF是富客户端,winform是常见的客户端,就是说wpf实现一些绚丽界面比winform更容易,这就是他们的区别,当然wpf是微软取代winfo...
来自:
随智阔
已有一个winform的完整项目,我用WPF做了个漂亮的界面,但是什么功能都没有。然后我想把winform程序中的所有功能都移植到WPF界面中,怎么实现呢? 注意,我设计的界面和winform原有界面
原文:http://hi.baidu.com/rickiedu/blog/item/37c9fe24adada61d8a82a1db.htmlMFC生成本机代码,自然是很快。可是,消息循环,减缓了界面...
来自:
j6915819的专栏
疑问 前一阵对WPF进行了基础知识的学习,当然花的时候实在很有限,(比我几年前学习Android的时间还要少得多得多),由此就关心到WPF这项技术的生命力,由于前几年微软宣布停止Sliverlight...
来自:
lee576的专栏
C#WPFvsWinForm WPF,WCF 如雷贯耳早听说WPF,WCF大名,但是就是一直没有去了解她……今天突然想去看看她长啥样? 主要是给自己留个笔记,顺便比较下WPF和Winform之前的区...
来自:
harvardfeng的专栏
小弟几个月前 学习了一段时间的 微软的 WPF编程 惊叹 WPF 用xml 去配置 窗口的 控件, 用wpf 写 winform编程 让我感觉到在用 html在编写 网页, 那段时间 真是佩服 微软的
2者层次不同,不可拿来比较 写了1年android,java的,最近同时写了1个月wpf,一开始不习惯wpf的布局,控件总是跑了,1个月后喜欢上了如此人性化的布局谁TMD还跟我说JAVA好,用andr...
来自:
大话程序员
Windows呈现基础(WindowsPresentationFoundation,WPF)是一个用于Windows平台的全新的图形显示系统。WPF是针对.NET而设计的,它受现代显示技术,如HTML...
来自:
wmjcom的专栏
转自:http://www.cnblogs.com/powertoolsteam/p/WPF_1.html近日微软公布了最新的WPF路线图,一片热议;对于老牌控件提供商葡萄城来说,这是WPF系列控件一...
来自:
xianjian1990的博客
什么是蓝牙? 也可以说是蓝牙技术。所谓蓝牙(Bluetooth)技术,实际上是一种短距离无线电技术,是由爱立信公司公司发明的。利用“蓝牙”技术,能够有效地简化掌上电脑、笔记本电脑和移动电话手机等移动...
来自:
这个时代,作为程序员可能要学习小程序
nginx是个好东西,Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambl...
来自:
maoyuanming0806的博客
本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...
来自:
Lynn_Blog
问题场景描述整个项目通过Maven构建,大致结构如下:
核心Spring框架一个module spring-boot-base
service和dao一个module server-core
提供系统...
来自:
开发随笔
Put与Delete操作Status DB::Put(const WriteOptions& opt, const Slice& key, const Slice& value) {
WriteB...
来自:
weixin_36145588的博客