WPF 初学者教程
⚡ 智能摘要
WPF(Windows 企业介绍 Foundation)是 Microsoft构建丰富框架 Windows 桌面应用程序。初学者将学习如何将 XAML、数据绑定和硬件加速图形结合起来,用更少的代码创建可扩展、视觉效果丰富的用户界面。

什么是 WPF?
WPF中 是一个构建框架 Windows WPF 是一款应用程序,它允许开发者使用更少的代码复杂度创建具有 3D 动画和丰富色彩的用户界面。它是一个基于矢量的渲染引擎,利用现代显卡的硬件加速功能,使用户界面运行速度更快,并且具有高度可扩展性。WPF 代表…… Windows 企业介绍 Foundation.
WPF 可以看作是 WinForms 的演进版本。它提供了一个易于操作的图形显示系统。 Windows 并实现了用户界面和业务逻辑的清晰分离。
WPF 应用程序通常作为独立的桌面程序部署,也可以作为嵌入对象托管在其他应用程序中。
为什么选择 WPF?
使用 WPF 平台有很多原因,其中一些主要原因包括:
- 如果您需要处理各种媒体类型,这是一个理想的平台
- WPF 允许您创建自定义皮肤的用户界面。当您需要加载部分用户界面或绑定 XML 数据时,它也能提供帮助。
- 它允许您利用大型 .NET 类库,因为它建立在 .NET 技术
- 由于 WPF 具有分辨率无关性,因此使用 WPF 开发的应用程序既可以在小型平板电脑屏幕上运行,也可以在 20 英寸显示器上运行。
- WPF 基于 DirectX 而非 WinAPI 构建。它使用客户端计算机的图形系统,因此提供更强大的图形渲染能力。
- 支持流程文档模型,可实现“桌面出版”级别的版面布局质量。
- 外观和行为是松耦合的。这使得设计师和开发人员可以分别在两个独立的模型上工作。
- 在 WPF 框架中,您可以使用简单的 XML 文档以图形方式设计工具,而无需解析代码。
- 允许您使用硬件加速来绘制 GUI,以获得更好的性能
接下来,让我们看看这个框架是如何随着时间演变的。
WPF 的历史
Windows 1.0 是第一个 GUI 环境 Microsoft它作为 DOS 之上的一个层运行,依靠 GDI 和 USER 系统来实现图形和用户界面。
DirectX 于 1995 年推出,是一款面向游戏和其他图形相关环境的高性能图形系统。多年来,DirectX 发布了多个版本,而 DirectX 9 提供了一个可用于托管 .NET 代码的库。
| WPF 版本 | 发行年份 | .Net 版本 | Visual Studio 版本 | 产品特性 |
|---|---|---|---|---|
| 3.0 | 2006 | 3.0 | 无 | 初始发行。 不过WPF开发可以用VS 2005来进行。 |
| 3.5 | 2007 | 3.5 | 对比 2008 | 修改和改进: 应用程序模型、绑定、控件、文档、注释和 3D UI 元素。 |
| 3.5 SP1 | 2008 | 3.5 SP1 | 无 | 原生启动画面支持。新的 Web 浏览器控件、DirectX 像素着色器支持。 |
| 4.0 | 2010 | 4.0 | 对比 2010 | 新增控件:日历、数据网格、日期选择器。支持多点触控和操作。 |
| 4.5 | 2012 | 4.5 | 对比 2012 | 启动速度更快,显示大型数据集时性能更佳。 新增 Ribbon 控件和用于数据验证的 INotifyDataErrorInfo 接口。 |
| 4.5.1 | 2013 | 4.5.1 | 对比 2013 | 性能和可靠性略有提升。 |
| 4.5.2 | 2014 | 4.5.2 | NA | 没有重大变化 |
| 4.6 | 2015 | 4.6 | 对比 2015 | 透明子窗口支持 HDPI 和触摸改进 |
| 4.8 | 2019 | 4.8 | 对比 2019 | .NET Framework 的最后一个主要版本,修复了高 DPI 问题并改进了辅助功能。 |
| .NET Core 3.0 及更高版本 | 2019至今 | .NET Core 3.0 到 .NET 10 | VS 2019/2022 | WPF 开源并与现代 .NET 一起发布(应用程序仍然可用)。 Windows-仅有的)。 |
WPF 不再与 .NET 分开进行版本控制。自 2019 年以来,它已作为现代 .NET 平台的开源组件发布,当前版本包含在 .NET 10 中,该版本于 2025 年 11 月作为长期支持 (LTS) 版本发布。
WPF 的功能
下图对 WPF 的主要功能进行了分组,详情请参见下文。

- 文件和打印
- 安全性、可访问性和本地化
- 提供与 Windows 表单控件
- Direct3D 用于性能至关重要的图形应用程序
- 使用显卡硬件进行渲染
- 基于矢量图形的图形允许您在不损失质量的情况下缩放应用程序。
- WPF 支持浮点逻辑像素系统和 32 位 ARGB 颜色。
- 重新定义样式和控件模板
- 从复合字体构建国际字体
- WPF文本渲染利用了ClearType技术。
- 允许您使用视频内存中预渲染文本的缓存技术
- 针对每项控制的基于资源的方法
- 演示计时器由 WPF 初始化和管理
- 还支持视频和动画之间的关系
- 在 WPF 中,样式是一组属性,这些属性应应用于用于视觉渲染的内容。
- WPF 中的模板可以帮助您更改文档的 UI。
- 命令更抽象tract 和松散耦合版本的事件
- WPF 对命令的支持减少了我们需要编写的代码量
接下来是这个 WPF C# 教程我们将学习 WPF 核心类型和基础架构。
WPF 核心类型和基础结构WPF Core Types and Infrastructures
WPF 中的类分为四种不同类型:
- 用户界面元素
- 框架元素
- 内容元素
- 框架内容元素
这些类被称为基本元素类。它们为用户界面组合模型提供了基础。
WPF 用户界面由元素组成,这些元素以树状层次结构排列,称为元素树。元素树是一种直观的用户界面布局方式,也是实现强大 UI 服务的基础结构。
XAML
可扩展应用程序标记语言,简称“XAML”(发音为“zammel”),是一种定义用户界面的声明式方法。
这是一个简单按钮的 XAML 定义:
<Button FontSize="16" HorizontalAlignment="Center" VerticalAlignment="Center" > Say Hello Guru99</Button>
使用 XAML 语言的优势:
- XAML 将前端外观与后端逻辑分离。
- XAML 是呈现用户界面最简单的方法
- XAML 与设计工具配合使用效果显著
Controls
WPF框架支持许多实用控件,例如:
- 编辑文本等控件Box, 查看Box, 单选按钮
- 列表控件,例如 ListBox、列表视图、树视图
- 用户信息,例如 Label、WPF ProgressBar、ToolTip
- 菜单、按钮和工具栏等操作
- Border、WPF Image 和 Viewbox 等外观
- 常见的对话框,例如 OpenFileDialog 和 PrintDialog。
- 诸如 TabControl、ScrollBar 和 Group 之类的容器Box
- 布局方式包括 DockPanel、StackPanel 和 Grid。
- 框架和超链接等导航
无需编程,即可使用样式和模板自定义控件的外观。您还可以通过从适当的基类派生新类来创建自定义控件。
外观
WPF 提供了自定义应用程序外观的功能。它允许您设置字体、背景等对象和值。
样式功能可让您标准化整个产品的特定外观。它允许您替换默认外观,同时保留其默认行为。
数据模板允许您控制绑定数据的默认可视化方式。借助主题,您可以轻松应用操作系统的视觉样式。
布局和面板
布局有助于您正确定位和调整控件的大小。它是为用户构建界面的一部分。WPF 框架简化了布局过程,并提供了更好的 UI 外观适应性。
布局基础架构由五种主要类提供:1) StackPanel 2) DockPanel 3) WrapPanel 4) Grid 和 5) Canvas
图像
WPF 提供了一个改进的图形系统:
- WPF 使用与设备无关的单位,从而实现分辨率和设备无关性。每个与设备无关的像素都会根据系统的每英寸点数 (DPI) 设置自动缩放。
- WPF 使用 double 代替 float,并支持更广泛的颜色
- WPF 图形引擎的设计方式使其能够充分利用可用的图形硬件
文件和打印
WPF框架提供三种类型的文档:
- 固定文件: 此类文档支持 WYSIWYG 演讲。
- 流程文件: 允许您根据运行时变量(例如窗口大小和设备分辨率)调整和重新流动内容。
- XPS 文档: XPS 是一种基于 XML 格式的电子文档分页表示形式,它是一种开放的、标准化的文档格式。
WPF 能够更好地控制打印系统,包括远程打印和打印队列。此外,XPS 文档可以直接打印,无需转换为其他打印格式。
既然基本组成部分都已了解,让我们来看看这些部分在内部是如何组合在一起的。
WPF中 Archi质地
WPF是.NET框架的一部分。它包含托管代码和非托管代码。下图解释了WPF架构的重要组成部分:
WPF 体系结构的组件
- 演示框架:帮助您创建顶级元素,例如控件、样式、布局、窗口等。
- 演示核心它包含 UIElement 和 Visual 等基本类型,PresentationFramework.dll 中的所有控件和形状都派生自这些基本类型。
- CLR:它通过提供以下功能使开发过程富有成效 内存管理、错误处理等等
- 米尔科: Milcore 是非托管代码的一部分,可与 DirectX 紧密集成。
- 的DirectX: 它是 WPF 的底层 API,负责渲染图形。DirectX 与驱动程序交互并渲染内容。
- 用户 32: 这是一个被许多程序广泛使用的核心API。它负责管理内存和进程隔离。User32可以帮助您决定屏幕上元素的放置位置。
- 内核: 输入源自内核模式设备驱动程序上的信号,并通过与以下进程连接而被路由到正确的进程: Windows 内核和User32。
WPF 数据绑定
数据绑定是 WPF 中最强大的概念之一。无需编写代码手动在控件和对象之间复制值,只需在 XAML 中声明一个连接,WPF 就会自动保持两端同步。例如:
<TextBox Text="{Binding Path=StudentName, Mode=TwoWay}" />
WPF 支持四种绑定模式:
- 单程: 当源数据发生变化时,控件会更新。
- 双向: 控制端和源端之间的变化是双向的。
- 一度: 控件仅在加载时读取一次源值
- OneWayToSource: 控制权会将自身的价值传递给源头,绝不会反过来。
数据绑定也是 MVVM(模型-视图-视图模型)模式背后的引擎,MVVM 是专业 WPF 应用程序最常见的架构,因为它允许视图保留在 XAML 中,而逻辑则存在于可测试的 C# 类中。
💡提示: 请在数据类中实现 INotifyPropertyChanged 接口。否则,当代码中属性值发生更改时,UI 将不会刷新。
WPF 安装
请参考此链接安装 WPF: https://www.guru99.com/download-install-visual-studio.html
接下来,在本 WPF 应用程序教程中,我们将构建我们的第一个 WPF 应用程序。
如何创建您的第一个 WPF 应用程序?
在本WPF示例中,我们将开发一个基本的WPF应用程序。那么,让我们按照下面WPF应用程序示例中给出的步骤开始简单的实现吧。
步骤1) 在 Visual Studio 中,转到“文件”>“新建”>“项目”
步骤2) 在新项目窗口中
- 选择 WPF 应用
- 输入名称“MyWPF”
- 单击确定
步骤3) Visual Studio 默认创建两个文件
- XAML 文件 (MainWindow.xaml)
- CS 文件 (MainWindow.xaml.cs)
MainWindow.xaml 有
- 设计窗口
- XAML 文件
在 XAML 窗口中,默认情况下会写入以下标签:
默认情况下,Grid 是第一个元素。
MainWindow.xaml.cs 文件包含与 XAML 设计文件对应的后台代码:
步骤4) 在工具箱里,
- 拖动文本Box 设计窗口的元素
- 一段文字Box 将出现在设计窗口中
- 您将看到文本的 XAML 代码Box 添加
步骤5) 将文本更改为“第一个 WPF 程序”。
步骤6) 单击开始按钮
步骤7) 您将在输出中看到一个窗口。
恭喜!您已经设计并创建了您的第一个 WPF 应用程序。接下来在本 WPF 初学者教程中,我们将看到 WPF 和 WinForms 之间的区别。
WPF 与 WinForms
| WPF中 | 窗体 |
|---|---|
| 它是一个较新的框架,因此更符合当前标准。 | 它比较古老,因此经过了更多的尝试和测试。 |
| 它灵活且功能丰富。无需编写代码或购买控件,即可设计出非常丰富的应用程序。 | 功能不算丰富。 |
| 3 的开发者rd 派对控件侧重于与 WPF 的兼容性,因为 WPF 代表着未来。 | 有许多第三方控件您可以购买或免费获得。 |
| XAML 使您可以轻松创建和编辑 GUI。它允许设计人员(XAML)和程序员(C#、VB.NET 等)分工合作。 | In Windows 表单中,所有代码都写在一个地方。 |
| XAML 技能可以直接迁移到 WinUI 3、.NET MAUI 和 Avalonia UI 等较新的框架中。 | WinForms 技能主要适用于经典 WinForms 开发。 Windows 桌面开发。 |
| WPF 的内置控件套件有限 | 收件箱控件非常强大 |
使用 WPF 构建的应用程序类型
- WPF 用于独立系统 Windows 桌面应用程序,例如企业业务线工具、仪表盘、交易终端和设计软件
- Windows 表单和 WPF 页面可以共存于同一个应用程序中
- 您可以开发页面/窗口导航式应用程序。
现代 .NET 中的 WPF
Microsoft WPF 于 2018 年 12 月开源,自 .NET Core 3.0 (2019) 以来,该框架已随每个现代 .NET 版本一起发布,直至 .NET 10。将应用程序迁移到现代 .NET 可带来更快的启动速度、通过自包含发布更简单的部署以及对当前 C# 语言特性的访问,而 WPF 编程模型保持不变。
WPF 仍然 Windows仅限此部分。如果您今天正在选择桌面框架,以下比较将对您有所帮助:
| 骨架 | 最适合 |
|---|---|
| WPF中 | 成熟、功能丰富 Windows 拥有庞大生态系统的桌面应用程序 |
| 用户界面 3 | 面向现代的新应用 Windows 11 外观和感觉 |
| .NET 毛伊岛 | 跨平台应用程序 Windows, macOS, Android, 和 iOS |
由于 WPF 仍在积极维护并深度嵌入企业软件中,因此学习它仍然是一项切实可行的投资。一旦您能够熟练地构建这些应用程序,就值得练习最常见的 WPF 功能。 WPF面试题 巩固 XAML、数据绑定和可视化树等概念。









