写点什么

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

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

    阅读完需:约 5 分钟

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

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

.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:5613093

评论

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

2022鲲鹏开发者创享日即将扬帆起航 与开发者共创未来共享非凡成就

科技热闻

如何修改电脑文件格式?

InfoQ IT百科

使用WPS需要注册/登录账号吗?

InfoQ IT百科

TASKCTL 容器签出失败解决方法

敏捷调度TASKCTL

大数据 DevOps 分布式 ETL 自动化运维

有哪些好用的代码编辑器?

InfoQ IT百科

一个WPS账号可以在多个设备同时登陆吗?

InfoQ IT百科

如何部署自己的网站?

InfoQ IT百科

目前WPS支持在哪些设备上使用?

InfoQ IT百科

TASKCTL 作业流程无触发设计

敏捷调度TASKCTL

大数据 DevOps 分布式 自动化部署 ETL任务

App怎么做灰度发布?

InfoQ IT百科

移动App的设计流程是怎样的?

InfoQ IT百科

有哪些适合程序员用的笔记应用?

InfoQ IT百科

主流的网站服务器架构有哪些?

InfoQ IT百科

怎么做App分发?

InfoQ IT百科

如何添加字体?

InfoQ IT百科

现在常用的在线协作文档软件有哪些?

InfoQ IT百科

WPS有哪些隐藏的使用小技巧?

InfoQ IT百科

WPS是什么软件?

InfoQ IT百科

现在常用的视频会议软件有哪些?

InfoQ IT百科

Java篇-序列化与反序列化

是老郭啊

Java 对象 序列化 反序列化

如何优雅高效地管理公司文档?

小炮

文档 文档管理

怎么让网站在搜索结果中排更前?

InfoQ IT百科

注册域名后,怎么创建个人网站?

InfoQ IT百科

WordPress 是什么?

InfoQ IT百科

有哪些比较靠谱的低代码开发平台?

InfoQ IT百科

App能收集哪些个人信息?

InfoQ IT百科

Docker 实战教程之从入门到提高 (八)

汪子熙

Docker 容器 docker image 容器镜像 4月月更

App分发是什么意思?

InfoQ IT百科

从杀慢查询入手来预防 MySQL 雪崩的办法

Qunar技术沙龙

dba

阿里云 云效一站式研发平台

阿里云云效

阿里云 DevOps 云原生 研发 一站式研发平台

怎么做SEO网站优化?

InfoQ IT百科

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