目录

C#_WPF技术清单

一、C# 语言基础

1.1 基本功

# 技术点 掌握 备注
1 值类型 vs 引用类型(struct vs class) 内存分配差异
2 装箱 / 拆箱(Boxing / Unboxing) 性能影响
3 string 不可变性 & StringBuilder
4 ref / out / in 参数修饰符
5 可空类型 Nullable<T> / T?
6 元组 Tuple / ValueTuple 解构
7 readonly / const 区别 编译时 vs 运行时
8 static 类 / 静态构造函数
9 运算符重载
10 索引器 this[int index]

1.2 面向对象

# 技术点 掌握 备注
11 封装 / 继承 / 多态 三大特性
12 abstract vs virtual vs override vs new 方法隐藏 vs 重写
13 interface 接口 & 默认实现(C#8+)
14 sealed 密封类/方法
15 访问修饰符(public/private/protected/internal/protected internal/private protected 6种
16 属性 get/set/init init 为 C#9+
17 record 类型(C#9+) 值语义的引用类型
18 对象初始化器 / 集合初始化器
19 构造函数链(this() / base()
20 IDisposable & using 模式 资源释放

1.3 泛型

# 技术点 掌握 备注
21 泛型类 / 泛型方法 / 泛型接口
22 泛型约束 where T : class/struct/new()/IXxx/T2
23 协变 out T / 逆变 in T IEnumerable<out T>
24 default(T) / default 关键字

1.4 委托与事件

# 技术点 掌握 备注
25 delegate 委托定义与使用
26 Action<T> / Func<T,TResult> / Predicate<T> 内置委托
27 Lambda 表达式 =>
28 event 事件声明与订阅 WPF 大量使用
29 多播委托 & 事件取消订阅防内存泄漏 ⚠️ WPF 常见坑
30 EventHandler<TEventArgs> 模式

1.5 LINQ

# 技术点 掌握 备注
31 查询语法 from...where...select
32 方法语法 .Where().Select().OrderBy()
33 GroupBy / Join / GroupJoin
34 Aggregate / Zip / SelectMany
35 First/Single/LastOrDefault 变体
36 Any() / All() / Count() / Sum()
37 延迟执行 vs 立即执行 ToList() 强制求值
38 IEnumerable<T> vs IQueryable<T> 内存 vs 表达式树
39 自定义 LINQ 扩展方法

1.6 异步编程

# 技术点 掌握 备注
40 async / await 基本用法
41 Task / Task<T> / ValueTask<T>
42 Task.Run() / Task.Factory.StartNew()
43 Task.WhenAll() / Task.WhenAny() 并发
44 ConfigureAwait(false) 库代码中使用
45 CancellationToken 取消机制 ⚠️ WPF 必须掌握
46 SynchronizationContext WPF UI 线程同步
47 IAsyncEnumerable<T> (C#8+) 异步流
48 异步中的异常处理 / AggregateException
49 死锁问题(.Result / .Wait() 在 UI 线程) ⚠️ WPF 经典坑

1.7 多线程与并发

# 技术点 掌握 备注
50 Thread / ThreadPool
51 lock / Monitor
52 Mutex / Semaphore / SemaphoreSlim
53 ConcurrentDictionary / ConcurrentQueue 线程安全集合
54 ReaderWriterLockSlim
55 Interlocked 原子操作
56 volatile 关键字
57 Channel<T>(生产者-消费者模式) 现代推荐方案

1.8 反射与特性

# 技术点 掌握 备注
58 Type / typeof / GetType()
59 反射获取/调用成员
60 自定义 Attribute 特性
61 Expression Tree 表达式树 高级 LINQ / 动态构建
62 Source Generator(C#9+) 编译时代码生成

1.9 C# 新特性(按需掌握)

# 技术点 版本 掌握
63 模式匹配 is / switch expression C#7-11
64 record / record struct C#9/10
65 global using / 文件范围命名空间 C#10
66 required 修饰符 C#11
67 主构造函数 class Foo(int x) C#12
68 集合表达式 [1, 2, ..arr] C#12
69 Span<T> / Memory<T> 高性能处理 C#7.2+

二、WPF 核心知识

2.1 XAML 基础

# 技术点 掌握 备注
70 XAML 语法 & 命名空间(xmlns
71 属性语法 vs 属性元素语法
72 标记扩展 {Binding} / {StaticResource} / {x:Type}
73 x:Name vs Name
74 x:Key / x:Static / x:Null
75 内容属性(Content Property)& ContentPropertyAttribute
76 类型转换器(TypeConverter)
77 XAML 中的集合语法

2.2 布局系统

# 技术点 掌握 备注
78 Grid(行列定义、* / Auto / 固定值) 最常用
79 StackPanel / WrapPanel / DockPanel
80 Canvas(绝对定位)
81 UniformGrid
82 ScrollViewer
83 ViewBox(缩放)
84 Margin / Padding / HorizontalAlignment / VerticalAlignment
85 布局过程:MeasureArrange 自定义Panel需要
86 自定义 Panel(重写 MeasureOverride / ArrangeOverride 进阶

2.3 依赖属性系统(⭐WPF 核心)

# 技术点 掌握 备注
87 DependencyProperty.Register() 基本注册
88 DependencyProperty vs 普通 CLR 属性
89 属性值继承(Property Value Inheritance) FontSize
90 属性优先级(11 级优先级) 动画 > 本地值 > 样式触发器 > …
91 CoerceValueCallback / ValidateValueCallback 值强制/验证
92 PropertyChangedCallback 变更通知
93 附加属性 RegisterAttached() Grid.Row
94 只读依赖属性 RegisterReadOnly()
95 DependencyPropertyKey

2.4 路由事件系统

# 技术点 掌握 备注
96 冒泡事件(Bubbling) MouseDown
97 隧道事件(Tunneling) PreviewMouseDown
98 直接事件(Direct)
99 RoutedEvent 注册
100 e.Handled = true 停止路由
101 AddHandler 附加事件处理(可接收已处理的事件)
102 自定义路由事件

2.5 数据绑定(⭐⭐WPF 灵魂)

# 技术点 掌握 备注
103 {Binding Path=xxx} 基本语法
104 DataContext 数据上下文 & 继承
105 绑定模式 OneWay/TwoWay/OneTime/OneWayToSource
106 UpdateSourceTrigger(PropertyChanged/LostFocus/Explicit)
107 INotifyPropertyChanged 实现 ⚠️ 必须熟练
108 ObservableCollection<T> 集合变更通知
109 IValueConverter / IMultiValueConverter 值转换器
110 MultiBinding 多重绑定
111 PriorityBinding
112 RelativeSource(Self/TemplatedParent/FindAncestor)
113 ElementName 绑定
114 StringFormat / FallbackValue / TargetNullValue
115 数据验证 IDataErrorInfo / INotifyDataErrorInfo
116 ValidationRule 自定义验证
117 Validation.ErrorTemplate 验证错误模板
118 BindingOperations.EnableCollectionSynchronization 跨线程集合
119 绑定调试(PresentationTraceSources.TraceLevel 排错利器

2.6 资源系统

# 技术点 掌握 备注
120 StaticResource vs DynamicResource 编译时 vs 运行时
121 ResourceDictionary 资源字典
122 MergedDictionaries 合并字典
123 主题切换(动态资源替换)
124 pack:// URI 方案 程序集资源引用
125 Application.Resources vs Window/控件级资源 作用域

2.7 样式与模板(⭐⭐WPF 精髓)

# 技术点 掌握 备注
126 Style(Setter / TargetType / BasedOn)
127 隐式样式(不指定 x:Key
128 Trigger(属性触发器)
129 DataTrigger / EventTrigger / MultiTrigger
130 ControlTemplate(⭐控件模板) 改变控件外观
131 TemplateBinding 模板中绑定控件属性
132 ContentPresenter / ItemsPresenter 模板中的内容占位
133 DataTemplate(⭐数据模板) 数据对象的可视化
134 DataTemplateSelector 动态选择模板
135 ItemsPanelTemplate 集合控件的面板
136 HierarchicalDataTemplate(TreeView 用)
137 可视化树 vs 逻辑树
138 VisualTreeHelper / LogicalTreeHelper 遍历元素树

2.8 常用控件

# 技术点 掌握 备注
139 TextBox / PasswordBox / RichTextBox
140 Button / ToggleButton / RepeatButton
141 CheckBox / RadioButton
142 ComboBox / ListBox / ListView
143 DataGrid(列定义/排序/分组/编辑) ⚠️ 复杂但常用
144 TreeView
145 TabControl
146 Menu / ContextMenu / ToolBar
147 Slider / ProgressBar
148 Expander / GroupBox
149 Popup / ToolTip
150 Image / MediaElement
151 Window / NavigationWindow / Frame / Page
152 UserControl vs CustomControl 区别与选择 ⚠️ 重要

2.9 命令系统(Command)

# 技术点 掌握 备注
153 ICommand 接口
154 RoutedCommand / RoutedUICommand 内置命令
155 CommandBinding / InputBinding
156 自定义 RelayCommand / DelegateCommand MVVM 核心
157 AsyncRelayCommand(异步命令)
158 CommandParameter 传参
159 CanExecute & 自动刷新 CommandManager.RequerySuggested

2.10 动画系统

# 技术点 掌握 备注
160 DoubleAnimation / ColorAnimation
161 Storyboard
162 BeginStoryboard / EventTrigger
163 缓动函数(EasingFunction
164 关键帧动画(KeyFrame
165 ObjectAnimationUsingKeyFrames
166 路径动画
167 Transform(Rotate/Scale/Translate/Skew)
168 RenderTransform vs LayoutTransform

2.11 图形与绘图

# 技术点 掌握 备注
169 Shape 系列(Rectangle/Ellipse/Path/Line/Polygon)
170 Path & Geometry(PathGeometry / StreamGeometry)
171 DrawingContext / DrawingVisual(低级绘制) 高性能
172 Brush 系列(Solid/Linear/Radial/Image/Visual/Drawing)
173 Effect(DropShadowEffect / BlurEffect)
174 Clip / OpacityMask
175 WriteableBitmap(像素级操作)

三、MVVM 架构模式

3.1 核心概念

# 技术点 掌握 备注
176 Model / View / ViewModel 职责划分
177 INotifyPropertyChanged 规范实现
178 ObservableCollection<T>
179 ICommand 实现(RelayCommand)
180 View 与 ViewModel 的关联方式 DataContext 注入
181 ViewModel 之间通信(Messenger/EventAggregator)
182 设计时数据(Design-Time Data) d:DataContext
183 ViewModel Locator 模式

3.2 MVVM 框架/工具包

# 技术点 掌握 备注
184 CommunityToolkit.Mvvm(⭐推荐) 微软官方,轻量
185 [ObservableProperty] 源生成器 自动生成通知属性
186 [RelayCommand] 源生成器 自动生成命令
187 ObservableObject 基类
188 WeakReferenceMessenger 弱引用消息
189 Prism 框架(模块化/导航/对话框/Region) 大型项目
190 ReactiveUI(响应式 MVVM) Rx 风格
191 Caliburn.Micro 约定优于配置

3.3 MVVM 实践难点

# 技术点 掌握 备注
192 ViewModel 中打开窗口/对话框 服务注入模式
193 ViewModel 中导航
194 密码框绑定问题 PasswordBox 不支持绑定
195 关闭窗口/确认取消 Behavior 或服务
196 设计模式配合(Service Locator / DI)

四、依赖注入(DI)

# 技术点 掌握 备注
197 DI 概念(控制反转 IoC)
198 Microsoft.Extensions.DependencyInjection ⭐推荐
199 生命周期:Transient / Scoped / Singleton
200 构造函数注入
201 IServiceProvider / IServiceCollection
202 在 WPF 中集成 DI(App.xaml.cs 配置)
203 工厂模式注入 Func<T>
204 第三方容器(Autofac / DryIoc) Prism 默认 DryIoc

五、数据访问

5.1 数据库

# 技术点 掌握 备注
205 ADO.NET(SqlConnection/SqlCommand/DataReader 基础
206 Entity Framework Core ORM
207 EF Core Code First / DB First
208 EF Core Migration 迁移
209 EF Core LINQ 查询 & 性能优化
210 Dapper(轻量 ORM) 高性能
211 SQLite(本地数据库,WPF 常用)
212 Repository 模式 / Unit of Work

5.2 数据序列化

# 技术点 掌握 备注
213 System.Text.Json 序列化/反序列化 .NET 原生
214 Newtonsoft.Json(Json.NET) 功能更全
215 XML 序列化 / XDocument / XmlSerializer 配置文件
216 二进制序列化 / MessagePack / Protobuf 高性能场景

5.3 配置管理

# 技术点 掌握 备注
217 appsettings.json + IConfiguration 现代方式
218 Settings.settings(传统方式)
219 IOptions<T> 选项模式

六、网络通信

# 技术点 掌握 备注
220 HttpClient 使用 & 最佳实践 IHttpClientFactory
221 REST API 调用(GET/POST/PUT/DELETE)
222 WebSocket 通信
223 SignalR 客户端 实时通信
224 gRPC 客户端 高性能 RPC
225 TCP/UDP Socket 编程
226 串口通信 SerialPort 工控场景
227 命名管道 / 内存映射文件(进程间通信)

七、WPF 进阶技能

7.1 性能优化

# 技术点 掌握 备注
228 UI 虚拟化(VirtualizingStackPanel 大数据量列表
229 数据虚拟化 延迟加载
230 Freezable.Freeze() 冻结对象 跨线程 + 性能
231 x:Shared="False"
232 延迟渲染 / Dispatcher.BeginInvoke 优先级
233 DispatcherTimer vs System.Timers.Timer
234 减少 XAML 复杂度 / 扁平化可视化树
235 性能分析工具(VS Profiler / WPF Performance Suite)
236 位图缓存 CacheMode="BitmapCache"

7.2 自定义控件开发

# 技术点 掌握 备注
237 UserControl(组合现有控件) 简单场景
238 CustomControl(无外观控件) 可换皮肤
239 Generic.xaml & Themes 文件夹 默认样式
240 TemplatePart / TemplateVisualState
241 OnApplyTemplate() 重写
242 自定义依赖属性暴露
243 控件库打包为 NuGet

7.3 行为与附加行为

# 技术点 掌握 备注
244 Microsoft.Xaml.Behaviors.Wpf
245 Behavior<T> 自定义行为 MVVM 辅助
246 EventTrigger + InvokeCommandAction 事件转命令
247 附加属性实现行为 轻量级方案

7.4 拖放 & 交互

# 技术点 掌握 备注
248 拖放(Drag & Drop)实现 DragDrop.DoDragDrop
249 手势识别 / 触摸事件
250 键盘快捷键 InputBinding / KeyBinding

7.5 多窗口 & 导航

# 技术点 掌握 备注
251 多窗口管理 Owner 关系
252 模态 vs 非模态对话框 ShowDialog vs Show
253 Frame + Page 导航
254 自定义导航框架(ContentControl 切换) MVVM 推荐方式
255 单实例应用(Single Instance) Mutex 方案

7.6 国际化 & 本地化

# 技术点 掌握 备注
256 .resx 资源文件
257 IMarkupExtension 多语言方案
258 动态切换语言 DynamicResource 方案

八、测试

# 技术点 掌握 备注
259 单元测试框架(xUnit / NUnit / MSTest)
260 Mock 框架(Moq / NSubstitute)
261 ViewModel 单元测试 MVVM 的好处
262 集成测试
263 UI 自动化测试(Appium / FlaUI)
264 代码覆盖率

九、部署与分发

# 技术点 掌握 备注
265 发布模式(Framework-dependent vs Self-contained)
266 单文件发布 PublishSingleFile
267 ReadyToRun / AOT 编译 启动速度
268 MSIX 打包 现代打包方式
269 ClickOnce 部署 自动更新
270 Inno Setup / WiX 安装包 传统安装
271 自动更新方案(Squirrel / AutoUpdater.NET)
272 代码签名(Code Signing)

十、常用第三方库 & 生态

10.1 UI 组件库

# 库名 说明 掌握
273 MaterialDesignInXamlToolkit Material Design 风格
274 HandyControl 国产优秀控件库
275 MahApps.Metro Metro 风格
276 Wpf UI(Lepo) Fluent Design
277 LiveCharts2 / OxyPlot / ScottPlot 图表库
278 AvalonEdit 代码编辑器控件
279 CefSharp / WebView2 内嵌浏览器
280 Dragablz 可拖拽 Tab

10.2 实用工具库

# 库名 说明 掌握
281 AutoMapper 对象映射
282 FluentValidation 流畅验证
283 Serilog / NLog 日志库
284 Polly 重试/熔断/降级
285 MediatR 中介者模式(CQRS)
286 ReactiveExtensions(Rx.NET) 响应式编程
287 Quartz.NET 任务调度
288 Fody / PropertyChanged.Fody 编译时注入 INPC

十一、开发工具与调试

# 技术点 掌握 备注
289 Visual Studio 调试器(断点/条件断点/数据断点)
290 XAML Hot Reload(热重载) 提升效率
291 Live Visual Tree / Live Property Explorer ⭐WPF 调试利器
292 Snoop(WPF 可视化调试) ⭐必装
293 XAML Binding Failures 窗口(VS 2022 17.8+) 绑定错误排查
294 性能探查器(CPU/内存/GPU)
295 dotTrace / dotMemory(JetBrains)
296 ILSpy / dnSpy(反编译)
297 Git / GitHub / Azure DevOps
298 NuGet 包管理 & 私有源

十二、架构与设计模式

# 技术点 掌握 备注
299 MVVM 模式 WPF 标配
300 SOLID 原则
301 单例模式
302 工厂模式 / 抽象工厂
303 观察者模式(事件/Rx)
304 策略模式
305 命令模式 ICommand
306 装饰器模式
307 状态模式
308 中介者模式 Messenger
309 领域驱动设计 DDD(按需) 复杂业务
310 Clean Architecture 分层架构
311 模块化架构(Plugin 架构) 大型 WPF 应用

十三、.NET 平台知识

# 技术点 掌握 备注
312 .NET Framework vs .NET Core vs .NET 5/6/7/8/9 版本演进
313 CLR / GC 垃圾回收(代/LOH/GC模式)
314 程序集(Assembly) / 强名称
315 .NET 互操作(P/Invoke 调用 Win32 API) WPF 常需要
316 COM 互操作 Office/硬件集成
317 Windows 服务 / 后台任务
318 WPF 从 .NET Framework 迁移到 .NET 8+ 趋势

优先级建议

P0 必须精通(WPF 开发者的硬指标):
   → 数据绑定 · MVVM · 依赖属性 · 模板系统 · 异步编程 · ICommand

P1 应该掌握(日常开发高频使用):
   → 样式触发器 · 布局 · 常用控件 · LINQ · DI · 调试工具

P2 建议了解(进阶提升):
   → 性能优化 · 自定义控件 · 动画 · 测试 · 设计模式

P3 按需学习(特定场景):
   → 串口通信 · COM 互操作 · 国际化 · 高级图形