WPF:版本、历史和主要增强功能






4.98/5 (20投票s)
最近我一直在寻找WPF的主要版本及其发展历程。令我惊讶的是,互联网上没有提供关于WPF版本的精简资料。于是我在这方面付出了一些努力,并写出了这篇文章。
引言
Windows Presentation Foundation (WPF) 是一个用于创建精美 GUI 应用程序的框架。它在 .NET 社区中非常流行,正如 MSDN 上所述,几乎 10% 的新创建项目都是 WPF。
但是,当我搜索其主要版本和各个版本带来的增强功能时,我找不到简洁的资源。不幸的是,其 维基百科页面 似乎没有更新。即使在 MSDN 上也没有提供此类摘要的网页。因此,我从各种资源中收集信息,并在这篇文章中进行了展示。我提供了指向这些资源的链接,并在本文的 参考文献 部分提供了更多链接,这些将作为进一步研究的参考。衷心感谢这些优秀博客/文章的作者。
注意:本文面向精通 WPF 的中级/高级用户。有关 WPF 的介绍,请访问 MSDN 网站 和 维基百科。
但是,当我搜索其主要版本和各个版本带来的增强功能时,我找不到简洁的资源。不幸的是,其 维基百科页面 似乎没有更新。即使在 MSDN 上也没有提供此类摘要的网页。因此,我从各种资源中收集信息,并在这篇文章中进行了展示。我提供了指向这些资源的链接,并在本文的 参考文献 部分提供了更多链接,这些将作为进一步研究的参考。衷心感谢这些优秀博客/文章的作者。
注意:本文面向精通 WPF 的中级/高级用户。有关 WPF 的介绍,请访问 MSDN 网站 和 维基百科。
目录
本文包含以下部分
WPF 版本和主要增强功能
下表简洁地概述了 WPF 版本、时间线和主要增强功能
WPF 版本 | 发布日期 (YYYY-MM) | .NET 版本 | Visual Studio 版本 | 主要特性 |
---|---|---|---|---|
3.0 | 2006-11 | 3.0 | N/A | 首次发布。 WPF 开发也可以使用 VS 2005(2005 年 11 月发布),并添加一些功能,如 此处 所述。 |
3.5 | 2007-11 | 3.5 | VS 2008 | 更改和改进 应用程序模型、数据绑定、控件、文档、注释和 3D UI 元素。 |
3.5 SP1 | 2008-08 | 3.5 SP1 | N/A | 原生启动画面支持、新的 WebBrowser 控件、DirectX 像素着色器支持。 更快的启动时间和改进的位图效果性能。 |
4.0 | 2010-04 | 4.0 | VS 2010 | 新控件:Calendar、DataGrid 和 DatePicker。 多点触控和操作 |
4.5 | 2012-08 | 4.5 | VS 2012 | 新 Ribbon 控件 新 INotifyDataErrorInfo 接口 |
4.5.1 | 2013-10 | 4.5.1 | VS 2013 | 无重大变化 |
4.5.2 | 2014-05 | 4.5.2 | N/A | 无重大变化 |
4.6 | 2015-07 | 4.6 | VS 2015 | 透明子窗口支持 HDPI 和触控改进 |
WPF 版本程序集路径
参考程序集可以在文件夹路径中找到
“C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework”。
在那里,您将找到从 .NET 3.5 开始安装的每个 .NET 框架版本的文件夹。在每个文件夹中,您将找到随相应 .NET 版本提供的 PresentationCore.dll 和 PresentationFramework.dll。您可以通过查看任何 DLL 属性窗口的“详细信息”选项卡来检查它们的构建版本差异。对于 3.0 和 Silverlight,请参考路径
"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework"。
有关更多信息,请查看 此链接。
“C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework”。
在那里,您将找到从 .NET 3.5 开始安装的每个 .NET 框架版本的文件夹。在每个文件夹中,您将找到随相应 .NET 版本提供的 PresentationCore.dll 和 PresentationFramework.dll。您可以通过查看任何 DLL 属性窗口的“详细信息”选项卡来检查它们的构建版本差异。对于 3.0 和 Silverlight,请参考路径
"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework"。
有关更多信息,请查看 此链接。
WPF 3 - 初始版本
WPF 的旅程正式始于 2006 年的首次发布。由于 WPF 作为 .NET Framework 3.0 的一部分发布,因此 WPF 的第一个版本也称为 WPF 3.0。它在开发期间的代码名为“Avalon”。WPF 的基本特性有:
- 采用 DirectX:为了实现 GPU 加速渲染,WPF 通过 DirectX 管道渲染和呈现图形(而不是依赖旧的 GDI 子系统)。DirectX 允许将图形任务卸载到 GPU。这释放了 CPU 来执行其他工作,从而提高了应用程序性能。
- 通过 XAML 实现声明式 UI:可扩展应用程序标记语言 (XAML) 是一种基于 XML 的标记语言。XAML 是 WPF 应用程序可视化呈现背后的语言。
- 依赖项属性:WPF 引入了一种新的属性类型,称为依赖项属性。依赖项属性依赖于多个提供者来确定其在任何时间点的值。DependencyProperty 的值是动态解析的。依赖项属性的主要优点是减少内存占用、值继承和更改通知。
- 数据绑定:数据绑定是建立应用程序 UI 和业务逻辑之间连接的过程。使用数据绑定,我们可以从任何对象的几乎任何属性中获取数据,并将其绑定到另一个对象的几乎任何其他依赖项属性。
- 模板和样式:WPF 为我们提供了一个基于模板和样式的可扩展模型,允许我们对控件的视觉外观进行复杂的更改和重新定义,而无需创建新控件。您可以通过修改控件的 ControlTemplate 来更改其结构和外观。Style 对象是表示指定控件属性的值的集合。
WPF 3.5 增强功能
- 应用程序模型的改进
- XBAP 现在可以在 Firefox 中运行。
- XBAP 和来自同一来源站点的 Web 应用程序之间可以共享 Cookie。
- 改进了 XAML IntelliSense 体验,提高了生产力并扩展了本地化支持。
- 全面的附加组件支持,用于支持独立应用程序和 XAML 浏览器应用程序 (XBAP) 中的非可视化和可视化附加组件。
- 图像缓存能力:现在您可以缓存通过 HTTP 下载到本地 Microsoft Internet Explorer 临时文件缓存的图像,以便后续的图像请求来自本地磁盘,而不是互联网。根据图像的大小,这可以显著提高网络性能。
- 交互式 3D 图形:3D 对象模型中添加了新功能
- 3D 中的输入、焦点和事件支持。
- 3D 上的交互式 2D 内容。
- 新的转换服务。
- 增强的数据绑定
- 新的调试机制使调试数据绑定更容易。
- 数据模型通过提供对 IDataErrorInfo 接口的支持,实现在业务层进行验证。此外,验证模型现在支持使用属性语法设置验证规则。
- 数据绑定模型现在支持 LINQ 和 XLINQ。
- 控件中的文本改进:RichTextBox 和 TextBoxBase 的增强功能。
- 文档改进:FlowDocumentPageViewer、FlowDocumentScrollViewer 和 FlowDocumentReader 都新增了一个名为 Selection 的公共属性。该属性获取表示文档中选定内容的 TextSelection。
- 注释改进:注释框架现在公开了将注释与相应注释对象匹配的功能。添加了一个新接口 IAnchorInfo。此外,AnnotationHelper 类中添加了一个新方法 GetAnchorInfo,它返回一个 IAnchorInfo 对象。
WPF 3.5 SP1 增强功能
- 改进了位图效果性能和更快的启动速度。
- 新的 WebBrowser 控件。
- 附加功能包括对业务线应用程序的更好支持、原生启动画面支持、DirectX 像素着色器支持。
WPF 4 增强功能
- 新控件,包括 Calendar、DataGrid 和 DatePicker。
- 多点触控和操作使您能够在 Windows 7 上创建同时接收多个触控输入的应用程序。
- 图形和动画支持布局舍入、像素着色器版本 3.0、缓存组合和缓动函数。
- System.Windows.Shell 命名空间中的新类型使您能够与 Windows 7 任务栏通信并将数据传递给 Windows shell。
- VisualStateManager 支持更改控件的状态。
- 文本渲染得到了改进,并支持自定义文本框中的插入符颜色和选定颜色。
- 绑定支持 InputBinding 的 Command 属性、动态对象和 Text 属性。
- XAML 浏览器应用程序 (XBAP) 支持与网页通信并支持完全信任部署。
WPF 4.5 增强功能
- 新的 Ribbon 控件,使您能够实现一个托管快速访问工具栏、应用程序菜单和选项卡的 Ribbon 用户界面。
- 新的 INotifyDataErrorInfo 接口,支持同步和异步数据验证。
- 能够设置属性更改和数据源更新之间应该经过的时间量。
- 改进了对实现弱事件模式的支持。此外,事件现在可以接受标记扩展。
- VirtualizingPanel 和 Dispatcher 类的新功能。
- 静态属性的数据绑定、实现 ICustomTypeProvider 接口的自定义类型的数据绑定,以及从绑定表达式中检索数据绑定信息。
- 能够检查项容器的数据上下文是否已断开连接。
- 提高了显示大量分组数据时的性能,以及通过非 UI 线程访问集合的性能。
WPF 4.6 增强功能
- HDPI 改进:.NET Framework 4.6 中 WPF 的 HDPI 支持现在更好。已对布局舍入进行更改,以减少带边框控件中剪切的情况。
- 透明子窗口支持:.NET Framework 4.6 中的 WPF 支持 Windows 8.1 及更高版本中的透明子窗口。这允许您在顶级窗口中创建非矩形和透明子窗口。您可以通过将 HwndSourceParameters.UsesPerPixelTransparency 属性设置为 true 来启用此功能。
- 触控改进:在旧版本中,触控产生不可预测的行为已在 .NET Framework 4.6 中得到解决。Windows 8.1 及更高版本中,Windows 应用商店应用程序和 WPF 应用程序的双击阈值现在相同。
结论
我希望本文能帮助您快速了解和理解 WPF 各个版本之间的差异。欢迎您的疑问和评论,以改进本文。谢谢。
参考文献
[1] WPF 在 .NET Framework 4.6 之后的未来
[2] WPF 可能没有投资计划(2014 年)
[3] WPF 在 .NET 4.6 中
[4] WPF 的演变 by Adam Nathan
[5] .NET Framework 版本历史