WPF教程(二) WPF vs WinForms

在前面的章节,我们讨论了WPF是什么,还涉及了一点点WinForms。在本章节,我将尝试比较两者,尽管它们服务的目的一样,却存在很多的区别。如果你以前从来没有接触过WinForms,或者WPF是你学习的第一种GUI框架,请跳过这一章节。但是如果你有兴趣的话,不妨尝试一读。先说说两者最重要的区别。WinForms只是标准窗体控件顶部的一层(如文本框),而WPF从零开始,几乎在所有场景下都不依赖于

大家好,又见面了,我是你们的朋友全栈君。

在前面的章节,我们讨论了WPF是什么,还涉及了一点点WinForms。在本章节,我将尝试比较两者,尽管它们服务的目的一样,却存在很多的区别。如果你以前从来没有接触过WinForms,或者WPF是你学习的第一种GUI框架,请跳过这一章节。但是如果你有兴趣的话,不妨尝试一读。

先说说两者最重要的区别。WinForms只是标准窗体控件顶部的一层(如文本框),而WPF从零开始,几乎在所有场景下都不依赖于标准窗体控件。这个区别看起来似乎微不足道,但是如果你之前有用过依赖于Win32/WinAPI框架的话,你一定不会这么认为。

举一个很好的栗子,现在有一个带图片和文字的按钮。它并不是一个标准窗体控件,WinForms无法提供现成的,你不得不自己画图片,实现支持图像的按钮,或使用第三方控件。相反,在WPF,按钮可以包含任何东西,因为它本质上是一个带内容和不同状态的边框。WPF的按钮就好像是一个看不见的物体,可以放入各种其他控件到里面,不部分WPF控件都是如此。你是想要一个带图片和文字的按钮?很简单,只要把一张图片和一个文本块放到按钮里面就搞定了。在标准WinForms控件之外好像你找不到这种灵巧的方式,这就是为什么像带图片的按钮这种简单的控件实现会有如此大市场的原因。

这种灵活性的缺点是你必须付出更大的努力去实现某个东西,而在WinForms却是非常容易的。因为它只是在你所使用的场景下创建的,无法通用。至少在最开始的时候是这种感觉,你创建了一个模块,建立了一个带图片和一些对齐文字的ListView,这个时候你发现这个在WinForm ListViewItem只是一行代码的事。

这仅仅是一个区别而已,当你在使用WPF时,你会发现其实在其他区别上,这些背后的原因是一样的:WPF只用自己的方式来处理事情,要么更好要么更差。你不再被Windows方式所约束,但是,得到这种灵活性的代价是,你需要付出更多的努力。

下面的表完整列出了WPF和WinForms的优势,它能让你更多的理解你要进入的领域。

WPF优势

1.比较新,从而更符合目前的标准。

2.微软正在使用它开发很多新应用,比如Visual Studio。

3.更灵活,你不必再去自己写控件或者买控件。

4.你所使用的第三方控件更多的聚焦在WPF上,因为它比较新。

5.XAML使得GUI的创建和编辑更加容易,而且允许拆分设计器(XAML)和代码器(C#, VB.NET).

6.数据绑定,你可以更加彻底的分离数据和布局.

7.用硬件加速绘制图形用户界面,性能更好。

8.允许你在Windows应用和web应用之间进行用户交互。

WinForms优势

1.出现比较久,已经经历很多检验和测试。

2.已经有很多第三方控件供你购买或者免费使用。

3.Visual Studio设计器仍然更适合WinForms,在WPF很多东西你还是需要自己去开发。



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127074.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月9日 上午10:00
下一篇 2022年4月9日 上午10:00


相关推荐

  • C++ CString转int int转CString「建议收藏」

    1.CString转int    CStringstrtemp="100";  int intResult;  intResult=atoi(strtemp);  —————————————————————–   2int转CString     CStringstr…

    2022年4月6日
    244
  • 智谱推「Claude API用户特别搬家计划」,应对Anthropic策略调整

    智谱推「Claude API用户特别搬家计划」,应对Anthropic策略调整

    2026年3月12日
    2
  • hive sql和sql的区别是什么_hives

    hive sql和sql的区别是什么_hives区别:1、Hive-sql不支持等值连接,而sql支持;2、Hive-sql不支持“Insertinto表Values()”、UPDATA、DELETE操作,而sql支持;3、Hive-sql不支持事务,而sql支持。总体来说hiveSQL与SQL基本上一致,最初的设计目的就是为了让会SQL但是不会编程MapReduce的人也能使用Hadoop进行数据处理。1、Hive不支持等值连接不支持等…

    2026年4月16日
    5
  • 程序员的生存法则_程序员的一生

    程序员的生存法则_程序员的一生前几天,和国内某知名企业的行销一线喝茶聊天,他一直在抱怨自己的上司很差劲,一直允诺追加奖金,但是月底考评结果却给的很差,奖金也没别人的多,所以他想调别的部门。我很是惊诧,这公司是你们家开的?怎么可以想调就调?他笑了笑说,你不懂职场生存法则吗?    他的工作需要经常出差,全国各地跑。上次是去江西,他知道部门A的老大老家在江西,就主动去找A部门老大,告之有个出差机会,要不要一起?后来我才明白“要不

    2022年10月7日
    6
  • php网页设计导航栏代码,总结7种常见的导航条制作实例

    php网页设计导航栏代码,总结7种常见的导航条制作实例导航条是网页设计中不可缺少的部分,它是指通过一定的技术手段,为网站的访问者提供一定的途径,使其可以方便地访问到所需的内容,是人们浏览网站时可以快速从一个页面转到另一个页面的快速通道。利用导航条,我们就可以快速找到我们想要浏览的页面。今天分享一下简单导航栏的制作方法:第一步:引入css样式表,新建一个id为nav的层,使用、、标签来制作完成效果。这篇文章主要为大家详细介绍了微信小程序实战之顶部导航栏…

    2022年7月22日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号