生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

.NET 5 重大变更之 WPF 和 Windows Forms

  • 2021-01-21
  • 本文字数:1427 字

    阅读完需:约 5 分钟

.NET 5重大变更之WPF和Windows Forms

.NET 5 重大变更系列的最后一个主题是 WPF 和 Windows Forms。这些桌面技术在.NET Core 3.0 之前是不可用的,因为.NET Core 的早期版本主要专注于基于 Web 的应用程序(ASP.NET Core)。


2002 年.NET 首次发布时,Windows Forms(非正式地被称为 WinForms)是最早的应用程序框架之一。(其他框架包括 WebForms、Console 和 Windows Services。)WinForms 深受 Visual Basic 的影响,和 VB 一样,它对原生 Windows 控件进行了一层薄薄的包装。默认情况下,这提供了非常好的性能,但定制能力相当有限。一般来说,开发人员应该允许操作系统处理样式等方面的东西。


WinForms 的第一个主要变化是在 2005 年发布的.NET 2.0 中出现的,引入了微软认为低效的各种用户控件的替代品,包括基本的数据网格。从那时起,这项技术就被认为是“完整的”,唯一的变化是偶尔更新一下,以便支持更高的 DPI。即使是长期存在的 bug 通常也会被忽略,这让使用 WinForms 进行新项目开发的开发人员感到非常恼火。


Windows Presentation Foundation (WPF)是微软首次尝试创建的一个完全可定制的 GUI 框架。虽然只比 WinForms 晚发布了四年,但它还是花了很长一段时间才被普遍接受,因为它的设计模式和概念更为复杂,性能也可能是一个问题。虽然有些技术(如虚拟化)可以使 WPF 在大型数据集上比 WinForms 快得多,但需要更深入的知识才能正确使用它们。此外,很多开发人员认为定制样式是必需的,因为默认样式很“丑”。


WPF 有两个影响深远的关键“特性”,一个是使用 XAML 进行 UI 布局,另一个是使用 MVVM 模式进行数据绑定。这些也被引入到其他项目中,比如 Silverlight 和 Universal Windows Platform。


像 WinForms 一样,WPF 多年来也一直被认为是“完整的”。它甚至不支持XAML-2009,即使是在 2012 年XAML规范发布之后。作为回应,Avalonia等项目试图改进 WPF 的缺陷,比如允许将事件直接绑定到模型或视图模型。

新的 SDK


在.NET Core 3.x 中,WPF 和 WinForms 需要一个叫作 Microsoft.NET.Sdk.WindowsDesktop 的自定义 SDK。在.NET 5 中,使用的是 Microsoft.NET.Sdk,就像其他.NET 5 项目一样。但现在的目标框架是 net5.0-windows,而不是 net5.0。

隐藏控制台输出


绝大多数 WPF 和 WinForms 应用程序不显示控制台窗口,这是默认的选项。如果你需要一个地方来显示额外的诊断信息,可以将 OutputType 设置为 Exe 而不是 WinExe。


在.NET 5 中,除非你将 DisableWinExeOutputInference 设置为 true,否则 OutputType 设置将被忽略。

错误处理的改进


错误处理的改进也可能是个重大变更。在.NET Core 3 的 Windows Forms 中,很多验证代码根本不存在。这意味着如果你传入一个无效的参数,它可能会抛出一个 NullReferenceException 或者表现出一种不确定的行为。


在.NET 5 中,它会抛出相应的 ArgumentException、ArgumentNullException 或 ArgumentOutOfRangeException。如果是属性为空,而不是参数为空,那么将抛出 InvalidOperationException。


有关如何正确使用异常,请参见.NET中的异常设计

移除状态栏控件


我们在上面讨论 WinForms 的历史,是为了解释状态栏控件都发生了什么。在.NET Framework 2 中被替换的一个控件是不起眼的StatusBar。在.NET 2 中是StatusStrip,它们的作用是一样的。


微软没有解释为什么要移除它,所以对于一个大多数人都不知道的控制,其维护成本太高了。StatusBar 在设计器工具箱中已经很久不可见了,在.NET 5 中已经被移除了。


本系列其他文章



原文链接


.NET 5 Breaking Changes for WPF/Windows Forms

2021-01-21 19:5611846

评论

发布
暂无评论
发现更多内容

美股上市辅导合伙人苏凌丘调研万达影业 欲打造VR眼镜沉浸式影院平台

科技热闻

打包与发布iOS应用的完整指南

雪奈椰子

面试官:Session和JWT有什么区别?

王磊

Java 面试题

IT外包行业未来发展趋势

Ogcloud

IT外包 IT外包公司 IT外包服务 IT外包企业 IT驻场外包

让 AI 帮你写代码,开发提效神器来了

阿里云云效

阿里云 AI 云原生

IT外包公司可以帮企业做哪些网络优化?

Ogcloud

IT IT外包 IT外包公司 IT外包服务 IT外包服务商

快马科技丨中小型经销商数字化怎么玩?

科技热闻

行云绽放签约湾区协同创新计划,共创数字新篇章

行云管家

云计算 数字化 湾区

适合新锐机构的教务管理系统——“校猩猩”正式上线

科技热闻

Penpad Season 2 质押突破350ETH,参与可获Scroll生态空投

西柚子

探寻开发好的体育赛事直播系统源码:谁会成为购买者?

软件开发-梦幻运营部

室内全彩LED显示屏的构成与技术

Dylan

技术 LED显示屏 全彩LED显示屏 led显示屏厂家 户内led显示屏

持续兑现承诺,英特尔锐炫Day 0驱动支持网易武侠大作《射雕》

E科讯

AI广告创意生产实践

之家技术

大模型 AIGC 企业号 4 月 PK 榜

连接世界,选择国外主机服务,让你的网站跨越地域限制

一只扑棱蛾子

国外主机 国外主机服务

喜报!天翼云论文被权威国际学术会议IEEE/ACM CCGrid收录

编程猫

大模型驱动的新范式选车引擎

之家技术

大模型 AIGC 企业号 4 月 PK 榜

AIGC在广告创意上的实践

之家技术

大模型 AIGC 企业号 4 月 PK 榜

智能座机方案建设与实践

之家技术

人工智能 企业号 4 月 PK 榜

IT外包服务:企业数据资产化加速利器

Ogcloud

IT外包 IT外包公司 IT外包服务 IT外包企业

通义灵码走进武汉大学:让 AI 编码助手激活大学生的创造力

阿里云云效

阿里云 AI 云原生 通义灵码

日志服务 HarmonyOS NEXT 日志采集最佳实践

阿里巴巴云原生

阿里云 云原生 HarmonyOS 日志服务 sls

汽车智能化多模态交互

之家技术

大模型 AIGC 企业号 4 月 PK 榜

我们是如何测试人工智能的(三)数据构造与性能测试篇

测试人

人工智能 软件测试

阿里云可观测 2024 年 3 月产品动态

阿里巴巴云原生

阿里云 云原生 可观测

零训练创建大模型的新方法:进化算法在模型融合中的应用

算AI

人工智能 神经网络 深度学习 算法

UniApp 应用发布到苹果商店指南

一定要避坑:关于微信H5分享,温馨提示你不要再踩坑了!!!

控心つcrazy

Vue 分享 H5

【FAQ】HarmonyOS SDK 闭源开放能力 —Asset Store Kit

HMS Core

HarmonyOS

给蚂蚁金服antv提个PR, 以为是改个错别字, 未曾想背后的原因竟如此复杂!

前夕

前端 数据可视化 bug 蚂蚁金服 antv-g2

汽车之家人的“灵创”AI应用平台及编程助手AutoCode

之家技术

大模型 AIGC 企业号 4 月 PK 榜

.NET 5重大变更之WPF和Windows Forms_语言 & 开发_Jonathan Allen_InfoQ精选文章