这门课解决什么问题
WPF 是 .NET 平台上做 Windows 桌面程序的主流框架,但和 WinForm 相比,它多了 XAML、依赖属性、数据绑定、路由事件这些概念。很多人照着文档能写出一个按钮,可一旦要做一个真正能用的工具——比如带多个窗口、有菜单和工具栏、能弹出对话框、还能显示列表数据——就不知道这些零件怎么拼起来。这门课就是针对这个场景:它不空讲理论,而是用一系列短小精悍的实例,把 WPF 里最常见的功能逐个拆开演示,让你看到“一个窗口怎么打开另一个窗口”“页面之间怎么导航”“对话框和主窗口是什么关系”“菜单、上下文菜单、状态栏、工具栏分别怎么搭”。学完这些实例,你对 WPF 的骨架和常用控件就有实感了,而不是停留在“认识控件”的层面。
适合什么基础
这门课需要你已经有 C# 的基础,至少会写类、方法、事件,了解基本的面向对象概念。如果你完全没写过 C#,直接看 WPF 会吃力,建议先补一点 C# 语法。另外,最好用过 Visual Studio,哪怕只是建过控制台项目。至于 WPF 本身,不需要提前学,因为课程就是从创建项目开始讲起的。但如果你已经用过 WinForm,那理解起来会更快,因为很多概念是相通的。这门课不是从零讲 C#,也不是从零讲 .NET 框架,它的定位是“给你一套 WPF 的实操参考”,所以适合那些已经会写代码、但没系统做过桌面界面的人。
资料怎么配合练习
这套资料是按“一个实例解决一个问题”组织的,每段视频都很短。不要一次性全部看完,那样记不住。建议你先看窗口和页面导航部分——包括创建新窗口、页面跳转、对话框、窗口所属关系、单实例和启动参数。这几块是任何 WPF 程序的地基,搞懂了,你才知道一个应用是怎么“串”起来的。然后看布局部分,尤其是 Grid 和 WrapPanel,因为界面好不好看、能不能自适应,全靠布局。接着看常用控件,比如文本输入、列表、下拉框、进度条、日历,这些是工具类界面的常客。每看完一个实例,立刻打开 Visual Studio 照着做一遍,不要只复制粘贴,要自己敲。做完以后,试着改一改需求,比如把“显示一个列表”改成“显示一个带筛选的列表”,或者把“普通对话框”改成“自定义样式的对话框”。这样才算把知识变成自己的。
学完这些内容,你能独立做出一个结构完整的 WPF 桌面程序:启动时检查是否已有实例在运行,能接收命令行参数,主窗口有菜单、工具栏、状态栏,中间用 Grid 或 WrapPanel 摆放各种输入控件和列表,点击按钮弹出对话框,还能处理未捕获的异常,不至于让程序直接崩溃。如果你之后还要做更复杂的功能,比如 MVVM 或数据绑定,这门课也给不了你全部答案,但至少你已经有了一个能跑起来的框架,再往上面加东西就不会发怵了。
课程目录
课程目录100 集
- 1 Visual Studio 2019及WPF工作负载 (11:44).mp4
- 2 创建一个新的WPF应用程序 (18:03).mp4
- 3 如何从窗口(Window)中创建新窗口 (10:04).mp4
- 4 如何创建页面(Page)和在页面之间导航 (14:25).mp4
- 5 如何创建一个对话框 (14:44).mp4
- 6 如何在窗口(Window)之间建立所属关系 (06:16).mp4
- 7 如何创建一个单实例的WPF应用程序 (07:45).mp4
- 8 如何向WPF应用程序传递启动参数 (05:42).mp4
- 9 如何捕捉WPF应用程序中未处理的异常 (07:58).mp4
- 10 使用TextBlock控件向UI中添加纯文本 (07:05).mp4
- 11 如何通过Label向其它控件添加文本内容 (05:03).mp4
- 12 如何为用户提供一个输入文本的可能性 (05:29).mp4
- 13 如何为WPF应用程序添加图片 (08:20).mp4
- 14 如何在WPF中直接使用2D图形 (12:12).mp4
- 15 如何使用ToolTip让控件显示附加的信息 (08:16).mp4
- 16 如何为WPF应用程序添加标准菜单 (14:33).mp4
- 17 如何为WPF应用程序添加上下文菜单 (05:11).mp4
- 18 如何在WPF中为用户提供单选和多选的功能 (11:52).mp4
- 19 如何使用进度条控件 (06:14).mp4
- 20 如何使用滑块来选择一个数字 (09:25).mp4
- 21 如何在WPF应用程序中使用日历控件 (11:47).mp4
- 22 如何在WPF应用程序中使用列表框控件 (14:24).mp4
- 23 如何在WPF应用程序中使用下拉选项框 (09:57).mp4
- 24 如何在WPF应用程序使用状态栏 (05:58).mp4
- 25 如何在WPF应用程序中使用工具栏面板 (09:48).mp4
- 26 如何使用Gird来构建UI布局 (12:04).mp4
- 27 如何使用UniformGrid来摆放子控件 (05:13).mp4
- 28 如何使用WrapPanel自动摆放子控件 (05:19).mp4
- 29 如何在StackPanel中摆放子控件 (05:16).mp4
- 30 如何在画布(Canvas)中摆放子控件 (05:01).mp4
- 31 如何使用Border来包装UI元素 (05:55).mp4
- 32 如何在WPF应用程序中使用滚动面板 (06:26).mp4
- 33 如何使用WPF中最常用的控件DockPanel (09:11).mp4
- 34 如何使用ViewBox来缩放UI元素 (06:19).mp4
- 35 如何使用TabControl控件创建选项卡布局 (07:13).mp4
- 36 如何在面板中动态添加删除子元素 (09:27).mp4
- 37 如何在WPF应用程序中提供拖放功能 (06:43).mp4
- 38 如何使用CLR属性以及UI通知 (07:25).mp4
- 39 如何使用WPF中的依赖项属性 (08:38).mp4
- 40 如何使用WPF中的附加属性 (05:09).mp4
- 41 如何在WPF中把数据绑定到对象 (06:16).mp4
- 42 如何在WPF中把数据绑定到集合 (08:51).mp4
- 43 如何使用元素与元素之间的数据绑定 (03:25).mp4
- 44 如何在DataGrid中对数据进行排序 (10:00).mp4
- 45 如何在DataGrid中对数据进行分组 (13:15).mp4
- 46 如何在DataGrid中对数据进行筛选 (09:43).mp4
- 47 如何在WPF中使用静态绑定 (04:42).mp4
- 48 如何在WPF中使用值转换器 (07:18).mp4
- 49 如何在WPF中使用多值转换器 (07:41).mp4
- 50 如何在WPF中创建和使用自定义控件 (13:39).mp4
- 51 如何在WPF中定制自定义控件 (08:11).mp4
- 52 如何在自定义控件中公开属性 (03:46).mp4
- 53 如何在自定义控件中公开事件 (07:43).mp4
- 54 如何使用行为来扩展控件的功能 (08:48).mp4
- 55 如何在WPF中创建和使用用户控件 (13:37).mp4
- 56 如何在用户控件中公开事件 (04:54).mp4
- 57 如何为控件创建和使用样式 (07:47).mp4
- 58 如何基于样式创建新的样式 (04:04).mp4
- 59 如何为控件自动应用样式 (05:10).mp4
- 60 如何编辑现有控件的模板 (11:35).mp4
- 61 如何为控件创建属性触发器 (04:01).mp4
- 62 如何为控件创建多属性触发器 (03:30).mp4
- 63 如何创建底层数据的触发器 (06:09).mp4
- 64 如何创建底层多数据的触发器 (04:21).mp4
- 65 如何创建和使用事件触发器 (04:59).mp4
- 66 如何在WPF应用程序中使用二进制资源 (06:01).mp4
- 67 如何在WPF中使用其它程序集中的二进制资源 (07:13).mp4
- 68 如何在WPF的隐藏代码中访问二进制资源 (06:28).mp4
- 69 如何在WPF中使用静态逻辑资源 (04:25).mp4
- 70 如何在WPF中使用动态逻辑资源 (08:03).mp4
- 71 如何有效管理逻辑资源 (08:36).mp4
- 72 如何使用用户为系统选择的颜色和字体 (04:02).mp4
- 73 如何使用MVVM模式来构建WPF应用程序 (13:11).mp4
- 74 如何在WPF应用程序中使用路由命令 (09:02).mp4
- 75 如何在渲染时缩放元素(ScaleTransform) (05:28).mp4
- 76 如何在渲染的时候旋转元素(RotateTransform) (05:06).mp4
- 77 如何在渲染的时候倾斜元素(SkewTransform) (04:15).mp4
- 78 如何在渲染的时候移动元素(TranslateTransfor (03:17).mp4
- 79 如何对多个转换进行分组(TransformGroup) (06:49).mp4
- 80 如何创建基于属性的动画 (08:05).mp4
- 81 如何创建基于路径的动画 (14:17).mp4
- 82 如何创建基于关键帧的动画 (10:22).mp4
- 83 如何为动画添加缓动效果(Easing Effects) (06:24).mp4
- 84 如何创建一个WCF服务 (11:17).mp4
- 85 如何创建一个自托管的WCF服务 (09:03).mp4
- 86 如何在IIS中托管WCF服务 (10:16).mp4
- 87 如何在WPF应用程序中集成WCF服务 (08:46).mp4
- 88 如何为XAML启用UI调试工具 (03:41).mp4
- 89 如何使用实时可视化树在XAML元素中导航 (07:28).mp4
- 90 如何使用实时属性资源管理器检查XAML属性 (05:09).mp4
- 91 如何从非UI线程中更新UI元素 (10:18).mp4
- 92 如何对长时间执行的线程提供一个取消的功能 (04:48).mp4
- 93 如何使用Backgroundworker组件 (11:25).mp4
- 94 如何使用定时器来周期性更新UI界面 (06:33).mp4
- 95 如何在WPF应用程序中驻留WinForm控件 (05:48).mp4
- 96 如何在WinForm应用程序中驻留WPF控件 (07:41).mp4
- 97 如何在WPF应用程序中调用WIN32API (07:11).mp4
- 98 如何在WPF应用程序中嵌入ActiveX控件 (05:57).mp4
- 99 如何从A窗口中更新B窗口中的内容 (05:27).mp4
- 100 WPF如何将DLL嵌入到exe文件中 (06:04).mp4






