WPF 初学者教程

⚡ 智能摘要

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

  • 🧭 Foundation: WPF 是 .NET 平台内基于矢量、DirectX 的 UI 框架。
  • ???? XAML 标记: 声明式 XML 语法将接口设计与 C# 业务逻辑分离。
  • 🧱 结 构: PresentationFramework、PresentationCore 和 Milcore 在 DirectX 之上协同工作进行渲染。
  • 🔗 数据绑定: 内置绑定将控件连接到数据源,并为 MVVM 模式提供支持。
  • 🛠️ 动手实践入门: Visual Studio 模板可让您通过七个步骤构建和运行第一个 WPF 应用程序。
  • 🚀 现代意义: WPF 是开源软件,并随 .NET 10 一起发布,享有长期支持。

WPF 初学者教程

什么是 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 的主要功能进行了分组,详情请参见下文。

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中 Archi质地

WPF中 Archi质地

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 中,转到“文件”>“新建”>“项目”

Visual Studio 文件菜单中显示“新建项目”选项

步骤2) 在新项目窗口中

  1. 选择 WPF 应用
  2. 输入名称“MyWPF”
  3. 单击确定

新建项目窗口,并选择 WPF 应用程序模板

步骤3) Visual Studio 默认创建两个文件

  • XAML 文件 (MainWindow.xaml)
  • CS 文件 (MainWindow.xaml.cs)

解决方案资源管理器显示 MainWindow.xaml 和 MainWindow.xaml.cs 文件

MainWindow.xaml 有

  1. 设计窗口
  2. XAML 文件

Visual Studio 中的 MainWindow.xaml 设计窗口和 XAML 编辑器

在 XAML 窗口中,默认情况下会写入以下标签:

为新的 WPF 窗口生成的默认 XAML 标签

默认情况下,Grid 是第一个元素。

MainWindow.xaml.cs 文件包含与 XAML 设计文件对应的后台代码:

WPF窗口的MainWindow.xaml.cs代码隐藏文件

步骤4) 在工具箱里,

  1. 拖动文本Box 设计窗口的元素
  2. 一段文字Box 将出现在设计窗口中
  3. 您将看到文本的 XAML 代码Box 添加

拖动文本Box 从工具箱到 WPF 设计窗口

步骤5) 将文本更改为“第一个 WPF 程序”。

编辑文字Box 第一个 WPF 程序的文本属性

步骤6) 单击开始按钮

Visual Studio 启动按钮,用于运行 WPF 应用程序

步骤7) 您将在输出中看到一个窗口。

正在运行的 WPF 应用程序窗口显示第一个 WPF 程序文本

恭喜!您已经设计并创建了您的第一个 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、数据绑定和可视化树等概念。

常见问题

你需要使用 XAML 来设计界面,使用 C#(或 VB.NET)来编写应用程序逻辑。具备面向对象编程和 .NET 类库的基础知识会让 WPF 的学习变得更加容易。

不,WPF 依赖于 DirectX。 Windows API,因此它只能在……上运行。 Windows对于跨平台 XAML 开发,请考虑以下事项 Avalonia UI or .NET 毛伊岛.

是的。类似这样的工具 GitHub 副驾驶 可以从注释中生成 XAML 布局、绑定表达式和样式,这加快了初学者的学习速度,并减少了重复标记。

你可以整合 机器学习网络 用于本地机器学习或调用云端人工智能服务,例如 Azure 从您的 C# 代码中使用 OpenAI,然后通过标准的 WPF 数据绑定显示结果。

是的。WPF 是基于 MIT 许可证的开源软件,您可以使用 Visual Studio Community Edition 免费构建应用程序。

总结一下这篇文章: