尽管“WPF已死”的谣言甚嚣尘上,但微软却并没有停止WPF开发的脚步。在.NET 4.6及未来版本的WPF中一共有四个主要的发展方向:
在具体谈到这四个方面之前,先让我们谈谈关于支持的问题。微软之前曾经多次在没有经过充分调研的情况下,武断地关闭了一些关于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机器上,虽然不会抛出任何异常,但子窗体无法显示为透明状态。
WPF现在已经理解支持多种分辨率的光标文件了。在加载某个光标文件时,你需要将使用DPI用于比例尺(scale)这一参数设置为“true”,以使这一特性生效。之前,你可以使用某个临时方案以解决这一限制,即手动检测DPI,并加载正确的光标图片。
另一个高DPI问题与在例如组合框等控件中背景的绘制方式有关。其中的bug会造成边框被切等现象,但虽然这个bug本身与所使用的DPI无关,但只有在高DPI的情况下这个bug才会显现出来。
明天我们将继续讨论WPF的长期计划,包括WPF应用本地化。
查看英文原文: WPF in .NET 4.6