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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Mac 破解zip压缩文件密码详解

    Mac 破解zip压缩文件密码详解使用fcrackzip来破解zip类型压缩文件fcrackzip是一款专门破解zip类型压缩文件密码的工具,工具破解速度还是可以的,能用字典和指定字符集破解,适用于Linux、MacOS系统。如果你的电脑没有安装brew,需要执行下面命令行/usr/bin/ruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebr…

    2022年5月1日
    460
  • 简易网页音乐播放器

    简易网页音乐播放器简易网页音乐播放器开发工具与关键技术:DW2021jQueryHTML5撰写时间:2021年5月28日简介与要点:在网页上制作一个音乐播放器我们仅需用到一个新的标签<audiosrc=”素材音乐”controls></audio>;因为我们这个音乐播放不是单曲循环的使用还要…

    2022年6月25日
    26
  • 安装keil5时,注册机在解压后消失的解决以及使用注册机破解keil5时,无法破解

    安装keil5时,注册机在解压后消失的解决以及使用注册机破解keil5时,无法破解这里写自定义功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入全新的界面设计,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown将代码片显示选择的高亮样式进行展示;增加了图片拖拽功能,你可以

    2022年6月2日
    110
  • python3合并两个有序列表 and 加一

    python3合并两个有序列表 and 加一

    2021年4月18日
    141
  • mac phpstorm激活码2022【2022.01最新】2022.02.27

    (mac phpstorm激活码2022)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html2KLKA7BQFO-eyJsaWNlbnNlSW…

    2022年4月1日
    105
  • mysql数据库报错1146_关于MySQL报错:[ERR] 1146

    mysql数据库报错1146_关于MySQL报错:[ERR] 1146最近因为电脑重装了系统,导致自己原本的数据库呗覆盖,需要重新重新安装数据库,但是由于我之前数据库版本是mysql5.0.22,版本太低,所以小编决定安装mysql5.7.23版本的,一开始没什么问题,根据之前的安装路径安装成功后,接着配置了mysql的环境变量mysql_path,,然后在数据库编辑工具NavicatforMySQL打开后,进行了一个小小的数据库查询:select*fr…

    2022年5月24日
    189

发表回复

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

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