Skip to content

About

C# WPF 完全教程。本教程是一套**完整、系统、由浅入深**的 WPF (Windows Presentation Foundation) 学习资源。涵盖 35 个核心知识模块,从第一个 Hello World 应用开始,逐步深入到企业级架构设计,帮助你从初学者成长为高级工程师和架构师。

Resources

Stars

25 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C# WPF 完全教程

从零基础到高级架构师的 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

📚 模块目录

第一阶段:基础入门(Beginner)

# 模块 主题 核心知识点
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

第四阶段:图形与动画(Intermediate)

# 模块 主题 核心知识点
18 2D 图形 绘图基础 Shapes、Geometry、Path、Brushes、DrawingVisual
19 变换系统 2D 变换 RenderTransform、LayoutTransform、TransformGroup
20 动画系统 动画制作 Timeline、Storyboard、关键帧、缓动函数
21 3D 图形 3D 渲染 Viewport3D、MeshGeometry3D、材质、光照、相机

第五阶段:高级系统(Advanced)

# 模块 主题 核心知识点
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、迁移指南

第七阶段:生产实战(Production)

# 模块 主题 核心知识点
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

🏗️ WPF 架构概览

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}
  • 模块独立性: 每个模块完全独立,无跨模块引用
  • 注释语言: 中文
  • 注释标记:
    • // 💡 要点: — 核心知识点
    • // ⚠️ 注意: — 易错点警告
    • // 🔑 关键: — 必须理解的内容

📜 许可

本教程仅供学习使用。

About

C# WPF 完全教程。本教程是一套**完整、系统、由浅入深**的 WPF (Windows Presentation Foundation) 学习资源。涵盖 35 个核心知识模块,从第一个 Hello World 应用开始,逐步深入到企业级架构设计,帮助你从初学者成长为高级工程师和架构师。

Resources

Stars

25 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages