Windows Presentation Foundation 3.5 版中的新增功能

更新:2007 年 11 月

本主题简要讨论 Windows Presentation Foundation (WPF) 3.0 版和 3.5 版之间的主要区别。

本主题包括下列各节。

  • 与 3.0 版的兼容性
  • 应用程序
  • 图形
  • 三维图形
  • 数据绑定
  • 控件
  • 文档
  • 批注
  • 相关主题

与 3.0 版的兼容性

向前兼容性和向后兼容性

使用 WPF 3.0 生成的应用程序可以在 WPF 3.5 运行库中运行。

如果使用 WPF 3.5 生成的应用程序只使用 WPF 3.0 中提供的功能,则该应用程序可以在 3.0 运行库上执行。

WPF 3.5 定义了一个新的 XML 命名空间 https://schemas.microsoft.com/netfx/2007/xaml/presentation。在使用 WPF 3.5 生成应用程序时,可以使用此命名空间或在 WPF 3.0 中定义的命名空间。

以特定的运行库为目标

使用 WPF 3.0 生成的应用程序能够以任何版本的框架为目标,只要该框架版本与最初生成该应用程序时所针对的框架版本相同或比该版本更高即可。有关更多信息,请参见如何:使用应用程序配置文件指定 .NET Framework 的版本

应用程序

应用程序模型已得到下列改进:

  • 提供全面的外接程序支持,可以支持独立应用程序和 XAML 浏览器应用程序 (XBAP) 中的非可视化和可视化外接程序。

  • XBAP 现在可在 Firefox 中运行。

  • 可以在 XBAP 与同一源站点中的 Web 应用程序之间共享 Cookie。

  • 为提高工作效率而改进的 XAML IntelliSense 体验。

  • 更广泛的本地化支持。

WPF 中的可视化和非可视化外接程序

可扩展的应用程序可以公开它的功能,从而允许其他应用程序与该应用程序集成并扩展其功能。外接程序是应用程序公开其扩展性的一种常见方式。在 .NET Framework 中,外接程序通常是作为动态链接库 (.dll) 打包的程序集。外接程序由宿主应用程序在运行时动态加载,以便使用和扩展由宿主公开的服务。宿主和外接程序通过已知协定进行交互,该协定通常是由宿主应用程序发布的公共接口。

只要某个应用程序支持外接程序,第一方和第三方开发人员就可以为该应用程序创建外接程序。很多应用程序都属于这种类型,包括 Office、Visual Studio 和 Microsoft Windows Media Player。例如,对 Microsoft Windows Media Player 的外接程序支持允许第三方创建 DVD 解码器和 MP3 编码器。

.NET Framework 实现的构造块可使应用程序支持外接程序。然而,考虑到健全的外接程序设计需要处理以下几个方面,构建这种支持可能十分复杂并要花费大量的时间:

  • 发现:查找遵循宿主应用程序所支持的协定的外接程序。

  • 激活:加载、运行外接程序并与之建立通信。

  • 隔离:使用应用程序域或进程建立隔离边界,避免外接程序的潜在安全问题和执行问题对应用程序造成影响。

  • 通信:通过调用方法和传递数据,允许外接程序和宿主应用程序跨过隔离边界相互通信。

  • 生存期管理:以可预测的干净方式加载和卸载应用程序域和进程(请参见应用程序域概述)。

  • 版本管理:确保在创建宿主应用程序或外接程序的新版本后,它们仍可进行通信。

您不需要自己解决这些问题,现在 .NET Framework 在 System.AddIn 命名空间中提供一组类型,这组类型统称为“外接程序模型”。.NET Framework 外接程序模型针对以上所列每个常见外接程序行为提供了功能。

不过,在某些情况下可能也需要允许外接程序与宿主应用程序 UI 集成并扩展其功能。WPF 为实现这种支持扩展了 .NET Framework 外接程序模型,这种扩展是通过在宿主应用程序的 UI 中显示外接程序所拥有的 FrameworkElement 而实现的。这就使 WPF 开发人员能够创建应用程序以支持以下常见方案:

  • 通过第三方“合作者”外接程序提供附加服务的 Messenger 风格的应用程序。

  • 设计用来承载第三方聚会游戏的游戏应用程序。

  • 承载广告的内容读取器应用程序。

  • 承载任意模块的 Mashup 应用程序;例如 Windows Sidebar。

独立应用程序和 XBAP 都可以承载的 WPF 外接程序。

有关更多信息,请参见 Windows Presentation Foundation 外接程序概述

对 XBAP 的 Firefox 支持

WPF 3.5 的一个插件使得 XBAP 能够从 Firefox 2.0 中运行,WPF 3.0 中没有这个功能。其中的重要功能包括:

  • 如果 Firefox 2.0 是默认浏览器,XBAP 将使用这一配置。也就是说,如果 Firefox 2.0 是默认浏览器,XBAP 将不使用 Internet Explorer。

  • 运行 Internet Explorer 的 XBAP 所具备的安全功能对于在 Firefox 2.0 中运行的 XBAP 同样可用,其中包括部分信任的安全沙盒。由浏览器提供的其他安全功能因浏览器而异。

独立 WPF 应用程序和 XBAP 可以创建、获取和删除会话和持久性 Cookie。在 WPF 3.5 中,可以在 XBAP、Web 服务器和同一源站点中的 HTML 文件之间共享持久性 Cookie。

有关 Cookie 的更多信息,请参见导航概述

Visual Studio IntelliSense 增强功能

现在可以使用 Visual Studio XAML 编辑器添加新的 XAML 元素,使用 Name 属性为该元素指定名称,从代码隐藏文件中引用该元素,并从 IntelliSense 资源管理器中查看该元素的成员。

本地化

WPF 3.5 增加了对以下语种的支持:

  • 孟加拉语

  • 梵文

  • 古吉拉特语

  • 古尔木其文

  • 卡纳达语

  • 马拉雅拉姆语

  • 奥里雅语

  • 泰米尔语

  • 泰卢固语

有关更多信息,请参见 Windows Presentation Foundation 全球化

对 TextBox 的输入法编辑器 (IME) 支持

FrameworkTextComposition 类现具有下列属性:

当用户使用 IME 在 TextBox 中输入文本,并且发生 TextInputTextInputUpdateTextInputStart 事件时,会将 FrameworkTextComposition 用作 TextCompositionEventArgs.TextComposition 属性。

图形

现在,您可以将通过 HTTP 下载的图像缓存到本地 Microsoft Internet Explorer 临时文件缓存中,这样,对该图像的后续请求将来自本地磁盘而非 Internet。根据图像大小的不同,这一功能可以显著改善网络性能。为支持此功能,添加了下面的成员:

添加了 BitmapSource.DecodeFailed 事件,用以在图像由于文件头损坏而加载失败时向用户发出通知。

三维图形

三维对象模型中添加了下列新功能。

三维对象模型中的输入、焦点和事件支持

三维对象模型现在支持诸如输入、焦点和事件等 UIElement 概念。提供这些服务的新类是 UIElement3D 和它的派生类 ContainerUIElement3DModelUIElement3D。有关示例,请参见 UIElement3D 球体示例处理三维事件的示例

三维对象上的交互式二维内容

新类 Viewport2DVisual3D 为将交互式二维内容放置在三维对象上提供了支持。有关示例,请参见三维中的交互式二维示例

新的转换服务

新类 GeneralTransform3DGeneralTransform2DTo3DGeneralTransform3DTo2D 可实现 Visual3D 对象在二维和三维之间的转换。

数据绑定

数据绑定已得到下列改进:

  • 新的调试机制降低了调试数据绑定的难度。

  • 数据模型通过提供对 IDataErrorInfo 接口的支持,可以实现对业务层的验证。另外,验证模型现在还支持使用属性语法来设置验证规则。

  • 数据绑定模型现在支持 LINQ 和 XLINQ。

新的调试机制

调试数据绑定现在更加容易。可以在绑定相关对象上设置新的附加属性 PresentationTraceSources.TraceLevel 以接收有关特定绑定的状态的信息。PresentationTraceSourcesSystem.Diagnostics 命名空间中的一个静态类。

对 IDataErrorInfo 的支持

数据验证模型现在支持 IDataErrorInfo 接口,可使业务对象确定输入的有效性。该接口定义了一个获取属性名称并返回字符串的索引器。添加了验证规则 DataErrorValidationRule,它检查由该索引器返回的异常。有关示例,请参见业务层验证示例

数据验证的另一种语法

BindingMultiBinding 类具有两个新属性:ValidatesOnExceptions 和 ValidatesOnDataErrors。这两个属性为在元素语法中设置 ExceptionValidationRuleDataErrorValidationRule 提供了另一种方式。

LINQ 和 XLINQ 支持

BindingListCollectionView 经过改进,现在为绑定到 BindingList<T> 类型的集合以及 LINQ 提供更好的支持。通过 IEnumerableCollectionView 进行数据绑定的行为经过改进,现在为绑定到 LINQ 生成的结果提供了更好的性能和支持。有关 LINQ 的示例,请参见 LINQ 查询示例

另外,数据绑定模型还提供了对 XLINQ 的支持。

控件

RichTextBox

现在,RichTextBox 在保存 TextElement 时以及在 TextElement 参与剪贴板操作时将保留自定义 TextElement 对象。此行为由以下新的 API 支持:

RichTextBox 有一个名为 IsDocumentEnabled 的新属性。当 IsDocumentEnabled 为 true 时,按钮和超链接等 UI 元素可以接受用户输入。

TextBoxBase

TextBoxBase 有一个名为 UndoLimit 的新属性,该属性指定该控件引用的操作的最大数目。

SoundPlayerAction

SoundPlayerAction 现在能够加载可由相对和绝对 pack 统一资源标识符 (URI) 标识的音频文件:

  • 资源文件:具有 Resource 生成操作的音频文件。

  • 内容文件:具有 Content 生成操作的音频文件。

  • 源站点文件:具有 None 生成操作的音频文件。

受保护的 Set 访问器

下列属性的 set 访问器现在受到保护,而不是内部访问器:

文档

FlowDocumentPageViewerFlowDocumentScrollViewerFlowDocumentReader 各有一个名为 Selection 的新的公共属性。该属性获取表示文档中选定内容的 TextSelection

批注

批注框架现在公开将批注与相应的批注对象相匹配的功能。添加了新接口 IAnchorInfo。另外,在 AnnotationHelper 类中还添加了一个新方法 GetAnchorInfo,该方法返回 IAnchorInfo 对象。

这些新增功能支持需要访问批注对象所锚定的对象的方案。有关示例,请参见带有注释窗格的批注文档查看器的示例

请参见

任务

带有注释窗格的批注文档查看器的示例

概念

.NET Framework 3.5 体系结构

.NET Framework 3.5 版中的新增功能

三维图形概述

数据绑定概述

批注概述

参考

SoundPlayerAction

BitmapImage