应用程序开发概述

更新:2007 年 11 月

Windows Presentation Foundation (WPF) 支持创建下列类型的应用程序:

  • 独立应用程序(传统风格的 Windows 应用程序,以可执行程序集的形式生成,安装在客户端计算机上并从客户端计算机上运行)。

  • XAML 浏览器应用程序 (XBAP)(由可导航页面构成的应用程序,这些页面以可执行程序集的形式生成,并通过 Windows Internet Explorer 进行浏览和承载)。

  • 自定义控件库(包含可重用控件的不可执行程序集)。

  • 类库(包含可重用类的不可执行程序集)。

说明:

不支持使用 WPF 生成 Windows 服务。因为 WPF 是一种表示技术,Windows 服务需要适当的权限才能执行涉及用户交互的可视化操作。如果 Windows 服务没有适当的权限,则可能会产生意外的结果。

为了创建此组应用程序,WPF 实现了大量服务。本主题概述这些服务并说明从何处可以获得更多信息。

本主题包括下列各节。

  • 应用程序管理
  • WPF 应用程序资源、内容和数据文件
  • 窗口和对话框
  • 导航
  • 承载
  • 生成和部署
  • 应用程序性能
  • 相关主题

应用程序管理

可执行 WPF 应用程序通常需要一组核心功能,包括:

  • 创建和管理通用应用程序基础结构(包括创建入口点方法和 Windows 消息循环,以接收系统和输入消息)。

  • 跟踪应用程序的生命周期并与之交互。

  • 检索和处理命令行参数。

  • 共享应用程序范围的属性和 UI 资源。

  • 检测和处理未处理的异常。

  • 返回退出代码。

  • 管理独立应用程序中的窗口。

  • 跟踪 XAML 浏览器应用程序 (XBAP) 以及带有导航窗口和框架的独立应用程序中的导航。

这些功能通过 Application 类来实现,您可以使用应用程序定义将该类添加到您的应用程序中。Application 具有下列功能。

有关更多信息,请参见应用程序管理概述

WPF 应用程序资源、内容和数据文件

WPF 支持三种不可执行的数据文件(包括资源、内容和数据文件),利用并扩展了 Microsoft .NET Framework中对嵌入资源的核心支持。

有关更多信息,请参见 Windows Presentation Foundation 应用程序资源、内容和数据文件

对 WPF 不可执行数据文件的支持的关键所在就是能够使用唯一的 URI 来标识和加载这些文件。

有关更多信息,请参见 Windows Presentation Foundation 中的 Pack URI

窗口和对话框

用户通过窗口与 WPF 独立应用程序进行交互。窗口的用途是承载应用程序内容并公开通常允许用户与内容交互的应用程序功能。在 WPF 中,窗口通过 Window 类进行封装,该类支持:

  • 创建和显示窗口。

  • 建立所有者窗口/附属窗口关系。

  • 配置窗口外观(例如,大小、位置、图标、标题栏文本和边框)。

  • 跟踪窗口的生命周期并与之交互。

有关更多信息,请参见 WPF Windows 概述

Window 支持创建一个特殊类型的窗口(即对话框)。既可以创建模式类型的对话框,也可以创建无模式类型的对话框。

为了方便起见,还为了在应用程序中获得可重用性并保持一致的用户体验,WPF 公开了三个通用的 Windows 对话框,包括 OpenFileDialogSaveFileDialogPrintDialog

消息框是一种特殊的对话框,用于向用户显示重要的文本信息,并询问简单的“是/否/确定/取消”问题。可以使用 MessageBox 类创建并显示消息框。

有关更多信息,请参见对话框概述

导航

WPF 支持使用页面 (Page) 和超链接 (Hyperlink) 进行 Web 风格的导航。可以通过多种方式实现导航,包括:

  • 由 Internet Explorer 承载的独立页面。

  • 编译到 XBAP(由 Internet Explorer 承载)中的页面。

  • 编译到独立应用程序中并由导航窗口 (NavigationWindow) 承载的页面。

  • 由帧 (Frame) 承载的页面,可以由独立页面承载,或编译到 XBAP 或独立应用程序中的页面。

为了便于导航,WPF 实现了下列功能:

  • NavigationService,用于处理导航请求的共享导航引擎,由 FrameNavigationWindow 和 XBAP 使用以支持应用程序内部的导航。

  • 用于启动导航的导航方法。

  • 用于跟踪导航的生命周期并与之交互的导航事件。

  • 使用“日记”记住后退和前进导航,也可以对日记进行检查和操作。

有关信息,请参见导航概述

WPF 还支持一种特殊的导航,称为结构化导航。结构化导航可用于调用一个或多个页面,这些页面通过与调用函数一致的结构化和可预测方式返回数据。此功能取决于 PageFunction<T> 类,结构化导航概述中对该类进行了进一步的介绍。PageFunction<T> 还用于简化复杂导航拓扑的创建,导航拓扑概述中对导航拓扑进行了介绍。

承载

XBAP 可以由 Microsoft Internet Explorer 6、Windows Internet Explorer 7 或 Microsoft Windows Media Center (WMC) 承载。每个宿主模型都有其自己的一系列注意事项和局限性,承载 Windows Presentation Foundation 应用程序主题中对此进行了介绍。

生成和部署

尽管可以使用命令行编译器从命令提示符中生成简单的 WPF 应用程序,但 WPF 与 Microsoft Build Engine (MSBuild) 进行了集成并对其进行了扩展,以便为简化开发和生成过程提供更多支持。有关信息,请参见生成 WPF 应用程序 (WPF)

根据您生成的应用程序的类型,可以选择一种或多种部署方式。有关更多信息,请参见部署 WPF 应用程序 (WPF)

应用程序性能

有关特定于 WPF 的性能注意事项,请参见优化 WPF 应用程序性能概述。

请参见

概念

Windows Presentation Foundation 简介

Windows Presentation Foundation 入门