.NET 4.6中的WPF

n342 9年前

英文原文:WPF in .NET 4.6

尽管“WPF 已死”的谣言甚嚣尘上,但微软却并没有停止 WPF 开发的脚步。在 .NET 4.6 及未来版本的 WPF 中一共有四个主要的发展方向:

  • 性能
  • 与 DirectX 的集成
  • 支持现代硬件
  • 工具

在具体谈到这四个方面之前,先让我们谈谈关于支持的问题。微软之前曾经多次在没有经过充分调研的情况下,武断地关闭了一些关于 WPF 及其它类库的 bug 报告,更不要说修复它们了。这种态度招致了大量的指责。而作为 4.6 版本路线图中的一部分,微软将重新打开在 Connect 中所记录的、投票数达到或超过 10 的所有 bug。虽然这种做法无法弥补之前的过失,但至少表现出微软已经开始认真地对待社区的反馈声音了。

从长期的计划来看,对 .NET 4.5.2 中的 WPF 的支持将一直持续到 2024 年。究其原因,是因为 .NET 以及 WPF 被看作是一种操作系统组件,因此它们也自动获得了与操作系统相同的支持周期。

触摸的支持

对触摸的支持改进主要专注于可靠性与性能等方面,尤其是在 UI 线程处于忙碌状态的情况下。对于多点触摸的事件报告也应当做到更加可靠。

滚动与虚拟化

WPF 的基础特色之一在于它可以对某个列表中的控件进行虚拟化。从理论上说,这种方式可以允许在列表中包含超过 1 万个列表项。而在实际中,有一系列的原因会造成虚拟化的失败。其中之一在于过多的布局循环造成的系统悬挂,而在 WPF 4.6 中有望解决这一问题。

透明的子窗体

在 Windows 8 中新增了将子窗体标注为透明的功能,这一行为也加入到 WPF 的功能中。要实现这一点,需要在某个清单文件中注明该应用将使用 Windows 8 中的特性。如果该应用程序运行在 Windows 7 机器上,虽然不会抛出任何异常,但子窗体无法显示为透明状态。

高 DPI 问题

WPF 现在已经理解支持多种分辨率的光标文件了。在加载某个光标文件时,你需要将使用 DPI 用于比例尺(scale)这一参数设置为“true”,以使这一特性生效。之前,你可以使用某个临时方案以解决这一限制,即手动检测 DPI,并加载正确的光标图片。

另一个高 DPI 问题与在例如组合框等控件中背景的绘制方式有关。其中的 bug 会造成边框被切等现象,但虽然这个 bug 本身与所使用的 DPI 无关,但只有在高 DPI 的情况下这个 bug 才会显现出来。

明天我们将继续讨论 WPF 的长期计划,包括 WPF 应用本地化。

来自: InfoQ