应用程序开发

Windows Presentation Foundation(WPF)是一种演示框架,可用于开发以下类型的应用程序:

  • 独立应用程序(传统样式的 Windows 应用程序,作为安装到客户端计算机并从其运行的可执行程序集) 。

  • XAML 浏览器应用程序(XBAP)(由作为可执行程序集生成的导航页和由 Web 浏览器托管的应用程序(如 Microsoft Internet Explorer 或 Mozilla Firefox)组成)。

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

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

注释

强烈建议不要在 Windows 服务中使用 WPF 类型。 如果你尝试在 Windows 服务中使用这些功能,它们可能无法按预期工作。

若要生成这组应用程序,WPF 将实现一系列服务。 本主题概述了这些服务以及查找详细信息的位置。

应用程序管理

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

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

  • 跟踪应用程序生存期并与之交互。

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

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

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

  • 返回退出代码。

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

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

    警告

    XBAP 要求旧版浏览器运行,例如 Internet Explorer 和旧版 Firefox。 这些较旧的浏览器通常在 Windows 10 和 Windows 11 上不受支持。 由于安全风险,新式浏览器不再支持 XBAP 应用所需的技术。 不再支持启用 XBAP 的插件。 有关详细信息,请参阅 有关 WPF 浏览器托管应用程序(XBAP)的常见问题解答。

这些功能通过您使用应用程序定义添加到应用程序中的 Application 类来实现。

有关详细信息,请参阅 应用程序管理概述

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

WPF 为嵌入式资源扩展了 Microsoft .NET Framework 中的核心支持,并支持三种类型的非可执行数据文件:资源、内容和数据。 有关详细信息,请参阅 WPF 应用程序资源、内容和数据文件

支持 WPF 非可执行数据文件的关键组件是能够使用唯一 URI 识别和加载这些文件。 有关详细信息,请参阅 WPF 中的 Pack URI

窗口和对话框

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

  • 创建和显示窗口。

  • 建立所有者/被拥有的窗口之间的关系。

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

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

有关详细信息,请参阅 WPF Windows 概述

Window 支持创建称为对话框的特殊类型的窗口的功能。 可以创建模式和无模式对话框类型。

为方便起见,以及应用程序可重用性和一致的用户体验的好处,WPF 公开了三个常见的 Windows 对话框:OpenFileDialogSaveFileDialogPrintDialog

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

有关详细信息,请参阅 对话框概述

WPF 支持使用页面(Page)和超链接()的 Web 样式导航。Hyperlink 可以通过多种方法实现导航,其中包括以下内容:

  • Web 浏览器中托管的独立页面。

  • 编译成在 Web 浏览器中托管的 XBAP 的页面。

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

  • 由框架(Frame)承载的页面,该页面可以托管在独立页面中,或者编译为 XBAP 或独立应用程序的页面。

为了便于导航,WPF 实现以下内容:

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

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

  • 用于跟踪和与整个导航过程生命周期交互的导航事件。

  • 使用日志保存后退和前进导航,可以对其进行检查和操作。

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

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

托管

XBAP 可以托管在 Microsoft Internet Explorer 或 Firefox 中。 每个托管模型都有自己的一组注意事项和约束,这些注意事项和约束包含在 托管中。

生成和部署

尽管可以使用命令行编译器从命令提示符生成简单的 WPF 应用程序,但 WPF 与 Visual Studio 集成,以提供简化开发和生成过程的其他支持。 有关详细信息,请参阅 生成 WPF 应用程序

根据生成的应用程序类型,有一个或多个部署选项可供选择。 有关详细信息,请参阅 部署 WPF 应用程序

标题 DESCRIPTION
应用程序管理概述 提供 Application 类的概述,包括管理应用程序生命周期、窗口、应用程序资源和导航。
WPF 中的窗口 提供有关在应用程序中管理窗口的详细信息,包括如何使用 Window 类和对话框。
导航概述 概述如何管理应用程序页面之间的导航。
托管 概述 XAML 浏览器应用程序(XBAP)。
构建和部署 介绍如何生成和部署 WPF 应用程序。
Visual Studio 中的 WPF 简介 介绍 WPF 的主要功能。
演练:我的第一个 WPF 桌面应用程序 演示如何使用页面导航、布局、控件、图像、样式和绑定创建 WPF 应用程序的演练。