尽管 Visual Studio 中使用 Office 开发工具创建的解决方案旨在直接使用 Windows 窗体控件,但也可以在解决方案中使用 WPF 控件。 Windows Presentation Foundation (WPF)是用于设计用户界面的 Windows 窗体的替代方法。 WPF 使用名为可扩展应用程序标记语言(XAML)的标记语言来提供用于合并 UI、媒体和文档的新技术。 有关详细信息,请参阅 WPF 概述。
适用于: 本主题中的信息适用于文档级项目和 VSTO 外接程序项目。 请参阅 Office 应用程序和项目类型提供的功能。
可在 Office 解决方案中托管 Windows 窗体控件的任何 UI 元素也可以托管 WPF 控件。 其中包括以下元素:
- 文档级自定义中的文档和工作表。 
- 文档级别自定义中的操作窗格。 
- VSTO 外接程序中的自定义任务窗格。 
- 适用于 Outlook 的 VSTO 外接程序中的窗体区域。 
在设计时向 Office 项目添加 WPF 控件
不能将 WPF 控件直接添加到 Office 解决方案中的 UI 元素。 而是将 用户控件 (WPF) 项添加到项目,并将其用作 WPF 控件的设计图面。 然后,将 WPF 用户控件添加到项目中的 UI 元素。
将 WPF 控件添加到操作窗格、自定义任务窗格或窗体区域
- 打开要向其添加自定义任务窗格、操作窗格或窗体区域的项目。 
- 向项目添加 用户控件(WPF) 项。 
- 在 工具箱中,将 WPF 控件添加到 WPF 用户控件设计图面。 - 默认情况下,当 WPF 用户控件设计器打开时, 工具箱 仅包含 WPF 控件。 
- 构建项目。 
- 向项目添加操作窗格、窗体区域或自定义任务窗格: - 对于窗体区域,将 Outlook 窗体区域 项添加到项目。 有关详细信息,请参阅 如何:将表单区域添加到 Outlook 加载项项目中。 
- 对于操作窗格,将 “操作窗格控件” 或 “用户控件” 项添加到项目中。 有关详细信息,请参阅 如何向 Word 文档或 Excel 工作簿添加操作窗格。 
- 对于自定义任务窗格,将 用户控件 项添加到项目。 有关详细信息,请参阅 “如何:向应用程序添加自定义任务窗格”。 
 
- 从ProjectName项目中的WPF 用户控件选项卡,将 WPF 用户控件拖动到操作窗格、窗体区域或自定义任务窗格的设计器。 - Visual Studio 自动创建一个 ElementHost 对象,该对象承载 UI 元素上的 WPF 用户控件。 
- 重新生成项目。 
将 WPF 控件添加到文档级项目中的文档或工作表
- 打开 Word 或 Excel 的文档级项目。 
- 向项目添加 用户控件(WPF) 项。 
- 在 工具箱中,将 WPF 控件添加到 WPF 用户控件设计图面。 
- 构建项目。 
- 将 用户控件 项(即 Windows 窗体用户控件)添加到项目。 
- 打开 Windows Forms 用户控件的设计器。 
- 从工具箱的 ProjectNameWPF 用户控件选项卡中,将 WPF 用户控件拖动到设计器。 - Visual Studio 会自动创建一个 ElementHost 对象,该对象托管 Windows 窗体用户控件中的 WPF 用户控件。 
- 编写以编程方式将 Windows 窗体用户控件添加到文档或工作簿的代码。 有关详细信息,请参阅 运行时向 Office 文档添加控件。 - 注释 - 不能将 Windows 窗体用户控件拖到设计器中的文档或工作表。 
- 重新生成项目。 
使用 ElementHost 类托管 WPF 控件
Visual Studio 提供的功能可帮助你在 Office 解决方案中使用 Windows 窗体控件,但它不提供 WPF 控件的类似功能。 例如,您可以在设计时通过从 工具箱拖动控件,或者在运行时使用辅助方法,向文档和工作表添加 Windows 窗体控件。 但是,这些工具不适用于 WPF 控件。
WPF 控件使用 ElementHost 类作为 Windows 窗体控件或窗体和 WPF 控件之间的集成层。 在设计时将 WPF 控件添加到解决方案时,Visual Studio 会自动生成对象 ElementHost 。
WPF 资源
有关在 Windows 窗体控件和窗体上托管 WPF 控件的体系结构和设计问题的详细信息,请参阅以下主题:
有关在设计时将 WPF 控件添加到 Visual Studio 中的 Windows 窗体控件和窗体的详细信息,请参阅以下主题: