从零基础到高级架构师的 WPF 学习之路
本教程是一套完整、系统、由浅入深 的 WPF (Windows Presentation Foundation) 学习资源。涵盖 42 个核心知识模块,从第一个 Hello World 应用开始,逐步深入到企业级架构设计与完整实战项目,帮助你从初学者成长为高级工程师和架构师。
每个模块包含:
📄 详细文档 — 由浅入深的概念讲解,配有 Mermaid 架构图
💻 可运行示例 — 完整可编译的示例程序,关键代码配有中文注释
🏋️ 练习题目 — 初级/中级/高级三个层次的练习
水平
建议模块
目标
零基础初学者
01–07
掌握 WPF 基本概念和核心系统
初级开发者
08–17
掌握数据绑定、MVVM、样式模板
中级开发者
18–27
掌握图形动画、高级系统、自定义控件
高级/架构师
28–35
掌握性能优化、企业架构、部署运维
生产实战
36–42
掌握窗口管理、异常日志、持久化、网络与系统集成,完成综合项目
操作系统 : Windows 10/11(WPF 仅支持 Windows)
SDK : .NET 8 SDK
IDE (任选其一):
Visual Studio 2022 17.8+(推荐)
JetBrains Rider 2024.1+
VS Code + C# Dev Kit
每个模块都是完全独立 的项目,无需打开整个解决方案:
# 进入任意模块目录
cd 01-wpf-introduction
# 编译并运行
dotnet run
#
模块
主题
核心知识点
01
WPF 概述
第一个 WPF 应用
WPF架构、项目结构、XAML初识、Application/Window
02
XAML 基础
XAML 语法详解
命名空间、属性元素、标记扩展、x:指令、类型转换
03
布局系统
面板与布局
Measure/Arrange、Grid、StackPanel、DockPanel、Canvas、自定义面板
04
常用控件
控件大全
内容模型、按钮、输入、选择、数据展示控件
05
依赖属性
WPF 属性系统
DP注册、元数据、回调、验证、值优先级、附加属性
06
路由事件
WPF 事件系统
冒泡/隧道/直接策略、事件处理、附加事件
07
输入系统
用户输入处理
鼠标/键盘、焦点管理、拖放操作
第二阶段:数据与 MVVM(Beginner → Intermediate)
#
模块
主题
核心知识点
08
数据绑定基础
绑定入门
绑定模式、DataContext、INotifyPropertyChanged、ObservableCollection
09
数据绑定进阶
高级绑定
RelativeSource、MultiBinding、转换器、CollectionView、验证
10
命令系统
命令模式
ICommand、RoutedCommand、RelayCommand、AsyncRelayCommand
11
MVVM 模式
MVVM 实战
ViewModelBase、消息传递、完整 MVVM 应用
12
MVVM 进阶
MVVM 高级主题
导航服务、对话框服务、设计时数据、DI集成
第三阶段:外观与自定义(Intermediate)
#
模块
主题
核心知识点
13
样式系统
Style 详解
Setter、BasedOn、隐式样式、触发器
14
资源与主题
资源管理
ResourceDictionary、Static/DynamicResource、主题切换
15
触发器与行为
交互逻辑
Property/Data/Event/MultiTrigger、行为模式
16
控件模板
外观重定义
ControlTemplate、TemplateBinding、VisualStateManager
17
数据模板
数据展示
DataTemplate、DataTemplateSelector、HierarchicalDataTemplate
#
模块
主题
核心知识点
18
2D 图形
绘图基础
Shapes、Geometry、Path、Brushes、DrawingVisual
19
变换系统
2D 变换
RenderTransform、LayoutTransform、TransformGroup
20
动画系统
动画制作
Timeline、Storyboard、关键帧、缓动函数
21
3D 图形
3D 渲染
Viewport3D、MeshGeometry3D、材质、光照、相机
#
模块
主题
核心知识点
22
可视树与逻辑树
WPF 内部结构
逻辑树/可视树、VisualTreeHelper、Adorner
23
线程与异步
并发编程
Dispatcher、async/await、IProgress、CancellationToken
24
文档与打印
文档处理
FlowDocument、FixedDocument、XPS、PrintDialog
25
导航系统
页面导航
Frame/Page、NavigationService、导航日志
26
自定义控件
控件开发
UserControl vs Control、Generic.xaml、TemplatePart
27
互操作
跨技术集成
WindowsFormsHost、HwndSource、Win32互操作
第六阶段:专业与架构(Senior / Architect)
#
模块
主题
核心知识点
28
性能优化
性能调优
渲染管线、虚拟化、Freezable、BitmapCache
29
内存管理
内存优化
内存泄漏、WeakReference、弱事件、IDisposable
30
测试策略
质量保证
ViewModel测试、Mock、UI自动化、xUnit
31
无障碍与本地化
全球化
UI Automation、AutomationPeer、.resx、文化切换
32
依赖注入
IoC 容器
DI容器、服务生命周期、ViewModel解析
33
架构模式
企业架构
Clean Architecture、模块系统、消息总线、CQRS
34
部署发布
应用发布
MSIX、ClickOnce、自包含部署、自动更新
35
WPF 现代化
未来展望
.NET 8新特性、Windows 11、迁移指南
#
模块
主题
核心知识点
36
窗口与对话框
窗口管理
窗口生命周期、模态/非模态、DialogResult、WindowChrome
37
图像与多媒体
位图与媒体
BitmapImage、WriteableBitmap、RenderTargetBitmap、MediaElement
38
异常处理与日志
生产级健壮性
三层异常捕获、文件日志、Serilog 生态
39
数据持久化
本地存储
%AppData% 规范、System.Text.Json、原子写入、SQLite/EF Core 选型
40
综合实战项目
完整应用
MVVM + DI 组合根 + ViewModel 导航 + 主题切换 + 持久化
41
网络与 API 通信
HTTP 客户端
HttpClient 复用、JSON API、下载进度、UI 三态、重试策略
42
系统集成
Windows 集成
单实例 Mutex、托盘 NotifyIcon、开机自启、剪贴板、PerMonitorV2 DPI
📖 另备有附录:WPF 调试工具链与排错手册 (Snoop、绑定调试、常见异常速查)
graph TD
M01[01 WPF概述] --> M02[02 XAML基础]
M02 --> M03[03 布局系统]
M03 --> M04[04 常用控件]
M04 --> M05[05 依赖属性]
M04 --> M13[13 样式系统]
M05 --> M06[06 路由事件]
M05 --> M08[08 数据绑定基础]
M06 --> M07[07 输入系统]
M08 --> M09[09 数据绑定进阶]
M09 --> M10[10 命令系统]
M10 --> M11[11 MVVM模式]
M11 --> M12[12 MVVM进阶]
M13 --> M14[14 资源与主题]
M14 --> M15[15 触发器与行为]
M15 --> M16[16 控件模板]
M16 --> M17[17 数据模板]
M03 --> M18[18 2D图形]
M18 --> M19[19 变换系统]
M19 --> M20[20 动画系统]
M20 --> M21[21 3D图形]
M05 --> M22[22 可视树与逻辑树]
M11 --> M23[23 线程与异步]
M04 --> M24[24 文档与打印]
M04 --> M25[25 导航系统]
M16 --> M26[26 自定义控件]
M04 --> M27[27 互操作]
M22 --> M28[28 性能优化]
M28 --> M29[29 内存管理]
M11 --> M30[30 测试策略]
M14 --> M31[31 无障碍与本地化]
M12 --> M32[32 依赖注入]
M32 --> M33[33 架构模式]
M33 --> M34[34 部署发布]
M34 --> M35[35 WPF现代化]
M01 --> M36[36 窗口与对话框]
M18 --> M37[37 图像与多媒体]
M23 --> M38[38 异常处理与日志]
M08 --> M39[39 数据持久化]
M12 --> M40[40 综合实战项目]
M32 --> M40
M39 --> M40
M23 --> M41[41 网络与API通信]
M39 --> M41
M27 --> M42[42 系统集成]
M36 --> M42
Loading
graph TB
subgraph 应用层
A[XAML + Code Behind]
B[Application / Window / Page]
end
subgraph 框架层
C[PresentationFramework]
D[控件 / 布局 / 样式 / 绑定]
end
subgraph 核心层
E[PresentationCore]
F[输入 / 动画 / 2D/3D / 文本]
end
subgraph 渲染层
G[milcore - Media Integration Layer]
H[DirectX / 硬件加速]
end
A --> C
C --> E
E --> G
G --> H
Loading
目标框架 : .NET 8.0 (LTS)
命名空间 : WpfTutorial.S{NN}.{Name}
模块独立性 : 每个模块完全独立,无跨模块引用
注释语言 : 中文
注释标记 :
// 💡 要点: — 核心知识点
// ⚠️ 注意: — 易错点警告
// 🔑 关键: — 必须理解的内容
本教程仅供学习使用。