课程培训
WPF实战培训课程

WPF实战培训课程大纲

 

培训对象

  • 具备C#基础、希望掌握桌面应用开发的.NET开发者

  • 需要从WinForms向WPF迁移的软件工程师

  • 希望掌握现代UI框架开发技能的桌面应用开发者

  • 技术团队中负责桌面客户端开发的人员

  • 计算机相关专业学生(已完成C#基础学习)

 

培训目标
使学员系统掌握WPF(Windows Presentation Foundation)的核心开发技能,深入理解XAML语法、布局系统、数据绑定、命令系统等核心技术;熟练运用MVVM设计模式实现UI与业务逻辑的解耦;掌握控件模板、样式、资源系统等UI定制技术;能够独立开发具有丰富交互体验和良好可维护性的企业级桌面应用程序。

 

培训内容介绍

 

一、WPF概述与开发环境搭建

(1)WPF技术定位:WPF作为微软新一代桌面应用开发框架的核心价值;WPF与WinForms的对比优势(矢量图形/硬件加速/声明式UI/数据驱动);WPF的应用场景(企业级应用/工业控制/金融终端/设计工具)。

(2).NET平台基础回顾:C#语言基础回顾;面向对象编程思想;委托与事件机制;泛型与集合的使用。

(3)开发环境搭建:Visual Studio 2022安装与配置;创建第一个WPF项目;项目结构解析(App.xaml/MainWindow.xaml);编译、调试与运行。

(4)WPF架构概览:PresentationFramework、PresentationCore、CLR的分层架构;可视化树与逻辑树的概念;依赖对象(DependencyObject)的继承体系。

 

二、XAML语法深度解析

(1)XAML概述:XAML作为声明式UI语言的设计哲学;XAML与C#代码隐藏模型的协作;XAML命名空间的定义与使用(xmlns)。

(2)XAML语法结构:属性语法(Attribute Syntax)的简化形式;属性元素语法(Property Element Syntax)处理复杂对象;类型转换器(Type Converter)的工作机制;标记扩展(Markup Extensions)的概念与应用(Binding/StaticResource/TemplateBinding)。

(3)XAML命名空间:默认命名空间(xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation);x命名空间(xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml);自定义CLR命名空间的映射。

(4)代码隐藏模型:Partial类的概念;在C#代码中访问XAML元素(x:Name/Name属性);Loaded与Unloaded事件。

(5)XAML编译过程:BAML(二进制XAML)的生成与加载;XAML编译选项(XamlCompilationOptions)。

 

三、布局系统实战

(1)布局设计理念:WPF布局系统的核心原则(测量Measure/排列Arrange);布局容器的嵌套与组合;布局性能优化考虑(避免过度嵌套/使用虚拟化容器)。

(2)Grid网格布局:Grid的行列定义(RowDefinition/ColumnDefinition);跨行跨列(RowSpan/ColumnSpan);网格分割器(GridSplitter)实现可调整布局;比例尺寸(*)与绝对尺寸的配合。

(3)StackPanel与WrapPanel:StackPanel的垂直/水平堆叠;Orientation属性控制方向;WrapPanel的自动换行与换列;ItemWidth/ItemHeight统一尺寸。

(4)DockPanel与Canvas:DockPanel的停靠布局(Left/Top/Right/Bottom);LastChildFill属性;Canvas的绝对定位(Left/Top/Right/Bottom);ZIndex控制重叠顺序。

(5)UniformGrid与ViewBox:UniformGrid的均等分格;ViewBox实现UI自动缩放;Stretch与StretchDirection的设置。

(6)自定义布局实战:重写MeasureOverride与ArrangeOverride方法;开发简单的自定义面板(如径向排列面板)。

 

四、控件体系与内容模型

(1)WPF控件体系层次:ContentControl(内容控件)、ItemsControl(条目控件)、HeaderedContentControl(带标题内容控件)、HeaderedItemsControl(带标题条目控件)的继承关系。

(2)内容控件实战:Button、Label、ToolTip等单一内容控件的使用;设置Content属性的多种方式(文本/图形/任意对象);内容控件的嵌套组合(按钮内包含图像和文本)。

(3)条目控件实战:ListBox、ComboBox、ListView的数据展示;条目容器(ItemContainer)的生成机制;选择模式(单选/多选/扩展选择);虚拟化技术(VirtualizingStackPanel)提升大数据量性能。

(4)范围控件:Slider滑块控件的属性(Minimum/Maximum/Value/TickFrequency);ProgressBar进度条的样式定制;ScrollBar滚动条的事件处理。

(5)菜单与工具栏:Menu菜单项的动态生成;ContextMenu上下文菜单的绑定;ToolBar工具栏的布局与溢出处理;StatusBar状态栏的信息更新。

(6)对话框与窗口:Window类的属性与方法(Show/ShowDialog);窗口的拥有关系(Owner);通用对话框(OpenFileDialog/SaveFileDialog/FolderBrowserDialog)的使用。

 

五、资源系统实战

(1)资源的概念与作用:资源(Resource)作为可重用对象的容器;资源在样式、模板、画笔共享中的重要性;资源的层级查找逻辑(Application→Window→Page→控件)。

(2)资源定义与查找:应用程序级资源(App.xaml);窗口级资源(Window.Resources);页面级资源(Page.Resources);控件级资源(FrameworkElement.Resources)。

(3)静态资源与动态资源:StaticResource的编译时解析;DynamicResource的运行时更新;动态资源的应用场景(主题切换/运行时样式变化);资源引用性能考量。

(4)资源字典(ResourceDictionary):创建独立资源字典文件;合并资源字典(MergedDictionaries);跨程序集共享资源;资源字典的加载与卸载。

(5)主题与皮肤切换:定义多套颜色资源字典;在运行时动态切换资源字典;实现应用主题切换功能。

 

六、样式与行为实战

(1)样式基础:Style作为属性值集合的封装;样式的目标类型(TargetType);基于键(Key)的样式与隐式样式(未指定Key自动应用于所有目标类型)。

(2)样式继承与扩展:BasedOn属性实现样式继承;子样式重写父样式的属性;样式合并(Style.Resources)添加嵌套资源。

(3)触发器(Triggers)实战:属性触发器(PropertyTrigger)监控属性变化改变样式;数据触发器(DataTrigger)响应数据对象属性;多条件触发器(MultiTrigger/MultiDataTrigger);事件触发器(EventTrigger)执行动画。

(4)行为(Behaviors):行为的本质(封装可重用的UI功能);使用Microsoft.Xaml.Behaviors库;内置行为(拖拽行为/鼠标拖拽行为);自定义行为开发。

 

七、模板系统实战

(1)模板的概念:WPF中“无外观”控件的设计理念;模板与样式的职责划分(样式定义属性值,模板定义视觉结构)。

(2)控件模板(ControlTemplate):控件模板的作用(完全重定义控件外观);模板绑定(TemplateBinding)实现控件属性与模板元素的关联;视觉树与逻辑树的构成;触发器在模板中的应用。

(3)数据模板(DataTemplate):数据模板的作用(定义数据对象的可视化呈现);ItemTemplate与ContentTemplate的区别;隐式数据模板(根据数据类型自动选择);数据模板选择器(DataTemplateSelector)的动态选择。

(4)面板模板(ItemsPanelTemplate):自定义条目容器的排列方式;实现非标准布局的条目列表(如径向菜单、环形列表);ItemsPanelTemplate与ItemsControl的配合。

(5)层级模板(HierarchicalDataTemplate):树形控件(TreeView)的模板设计;递归数据结构的可视化(部门树/文件目录);数据绑定与模板节点的关联。

 

八、数据绑定实战

(1)数据绑定核心概念:绑定源(Source)、绑定目标(Target)、路径(Path)的完整定义;绑定的方向(OneWay/TwoWay/OneTime/OneWayToSource)的选择策略;UpdateSourceTrigger的触发时机(PropertyChanged/LostFocus/Explicit)。

(2)绑定上下文(DataContext):DataContext的继承机制(子元素自动继承父元素DataContext);在XAML中设置DataContext(静态资源/元素名称);代码中动态更改绑定源。

(3)绑定到集合:ObservableCollection<T>实现集合变化通知;BindingList<T>与旧版集合的适配;集合视图(CollectionViewSource)的分组、排序、筛选功能;ICollectionView接口的使用。

(4)值转换器(IValueConverter):转换器的应用场景(布尔值转可见性/颜色值转换/日期格式化);实现IValueConverter接口;转换器参数(ConverterParameter)与文化感知(Culture);多值转换器(IMultiValueConverter)的实现。

(5)相对源绑定(RelativeSource):Self模式(绑定自身属性);FindAncestor模式(查找父级元素);TemplatedParent模式(模板内绑定);PreviousData模式(数据模板中前一项数据)。

(6)绑定到XML/对象:XmlDataProvider绑定XML数据;ObjectDataProvider绑定.NET对象;绑定到动态对象(ExpandoObject)。

 

九、命令系统实战

(1)命令的概念:命令作为UI动作的抽象封装;命令与事件的区别(关注点分离/多源共享/状态同步)。

(2)内建命令库:ApplicationCommands(新建/打开/保存/打印);NavigationCommands(导航命令);EditingCommands(编辑命令);MediaCommands(媒体控制命令)。

(3)自定义命令实战:创建静态命令实例;实现ICommand接口;CanExecute与Execute方法的实现逻辑;命令参数(CommandParameter)传递。

(4)命令绑定(CommandBinding):将命令连接到具体业务逻辑;命令路由机制(冒泡与隧道);预览命令(Preview)的处理。

(5)MVVM中的命令:RelayCommand/DelegateCommand的通用实现;命令的CanExecute动态控制;异步命令与进度通知;复合命令(CompositeCommand)的实现。

 

十、MVVM设计模式实战

(1)MVVM模式概述:MVVM(Model-View-ViewModel)的起源与设计目标;与MVC/MVP模式的对比优势(解耦/可测试性);MVVM在WPF中的天然适配(数据绑定/命令系统)。

(2)实现ViewModel基类:INotifyPropertyChanged接口的实现;属性变更通知的简化(CallerMemberName);Setter中通知的规范写法;属性依赖关系处理(属性变更影响其他属性)。

(3)命令封装实战:实现RelayCommand泛型与非泛型版本;异步命令(AsyncCommand)的进度通知;命令的CanExecute动态控制逻辑。

(4)视图与ViewModel关联:DataContext的赋值方式(XAML中声明/代码中创建/视图定位器);ViewModelLocator模式实现自动匹配;依赖注入容器在MVVM中的应用。

(5)消息与通信:事件聚合器(EventAggregator)实现松耦合通信;Mediator模式的应用;视图间数据传递的最佳实践(对话框服务/导航服务)。

(6)验证框架集成:IDataErrorInfo与INotifyDataErrorInfo的实现;FluentValidation在MVVM中的集成;验证结果的UI反馈。

 

十一、数据验证实战

(1)数据验证概述:WPF数据验证的层级(属性级验证/对象级验证);验证与UI反馈的分离设计;验证规则的执行时机。

(2)异常验证:在属性Setter中抛出异常;ExceptionValidationRule的使用;验证结果的UI呈现(红色边框/错误提示)。

(3)IDataErrorInfo接口:实现基于接口的属性级验证;错误信息的动态提供(按属性名返回错误);界面反馈的自动关联(Validation.HasError)。

(4)INotifyDataErrorInfo接口:异步验证支持;多属性错误管理;错误集合的变化通知;ErrorsChanged事件的触发。

(5)ValidationRule自定义:继承ValidationRule类;实现Validate方法的业务逻辑;验证结果的传递(ValidationResult);规则参数传递。

(6)验证模板定制:Validation.ErrorTemplate属性自定义错误样式;ToolTip显示错误信息;验证反馈的美化设计(红框/图标/浮动提示)。

 

十二、图形与动画实战

(1)2D图形基础:Shape类(Rectangle/Ellipse/Line/Path)的使用;几何图形(Geometry)与形状的对比优势(轻量级/可重用);画刷(Brush)的类型与使用(SolidColorBrush/LinearGradientBrush/ImageBrush/VisualBrush)。

(2)变换(Transform)实战:旋转变换(RotateTransform)实现元素旋转;缩放变换(ScaleTransform)实现元素缩放;平移变换(TranslateTransform)实现元素移动;变换组(TransformGroup)的组合应用;布局变换与渲染变换的区别。

(3)3D图形入门:Viewport3D容器;3D场景构成(相机/光照/模型);ModelVisual3D与GeometryModel3D;简单3D模型的创建与变换。

(4)动画基础:动画的时间轴模型(Timeline);From/To/By动画的应用;关键帧动画(KeyFrameAnimation)实现复杂路径;动画的FillBehavior与RepeatBehavior。

(5)故事板(Storyboard)实战:故事板的创建与配置;在XAML中声明动画(事件触发器触发);代码中控制动画播放(Begin/Stop/Pause/Resume);动画的Completed事件处理;动画的缓动函数(EasingFunction)实现自然运动。

 

十三、企业级项目结构实战

(1)项目分层架构:UI层(Views)、业务逻辑层(ViewModels)、数据访问层(Models/Services)的职责划分;依赖方向与解耦策略;项目引用关系规范。

(2)模块化设计:Prism框架简介(模块化/导航/区域管理);模块的独立开发与动态加载;模块间通信机制。

(3)日志与异常处理:集成Serilog/NLog日志框架;全局未处理异常的捕获与记录;用户友好的错误提示。

(4)配置管理:应用配置文件的读取(App.config/appsettings.json);用户设置与应用程序设置的区别;配置的动态更新。

(5)服务定位器模式:服务容器的集成(Unity/Autofac);服务的注册与解析;构造函数注入的实现。

 

十四、部署与发布

(1)ClickOnce部署:ClickOnce的发布模型;发布设置与选项(安装模式/更新策略/必备组件);自动更新的配置;安全权限管理(完全信任/部分信任)。

(2)MSI安装包制作:使用Visual Studio Installer Projects扩展;创建自定义安装向导;注册表与文件操作;桌面快捷方式与文件关联。

(3)Windows应用商店打包:打包为MSIX格式;应用证书与签名;Windows应用商店提交流程;桌面桥(Desktop Bridge)技术。

(4)单文件发布:.NET Core的单个可执行文件发布;运行时包含与框架依赖部署的对比;配置文件的处理策略。

 

十五、综合实战项目

(1)项目一:员工信息管理系统(MVVM完整实践):搭建项目结构(Views/ViewModels/Models/Services)→创建员工数据模型→实现员工列表视图(DataGrid+数据绑定)→添加/编辑/删除功能(命令实现)→数据验证(IDataErrorInfo)→员工详情页(属性同步)→搜索与筛选(CollectionView)→数据持久化(Entity Framework Core)。

(2)项目二:待办事项应用(数据模板与样式):设计任务数据模型→任务列表的多样式展示(不同优先级颜色)→任务完成状态的视觉区分(Strikethrough)→添加任务表单(数据验证)→分类视图(按项目/标签分组)→动画效果(任务完成飞入效果)→主题切换功能(浅色/深色模式)。

(3)项目三:库存管理系统(高级控件与打印):产品目录树(TreeView+层级数据模板)→库存盘点列表→库存预警(条件格式化)→报表生成(FlowDocument)→打印预览与打印→导出Excel功能→图表分析(LiveCharts/WPF Toolkit)。

(4)项目四:音乐播放器(多媒体与动画):播放界面设计(自定义控件模板)→播放列表(拖拽排序)→音乐可视化(进度条动画+频谱动画)→专辑封面展示(3D翻转效果)→后台播放与通知区图标→系统快捷键支持。




如果您想学习本课程,请预约报名
如果没找到合适的课程或有特殊培训需求,请订制培训
除培训外,同时提供相关技术咨询与技术支持服务,有需求请发需求表到邮箱soft@info-soft.cn,或致电4007991916
技术服务需求表点击在线申请

服务特点:
海量专家资源,精准匹配相关行业,相关项目专家,针对实际需求,顾问式咨询,互动式授课,案例教学,小班授课,实际项目演示,快捷高效,省时省力省钱。

专家力量:
中国科学院软件研究所,计算研究所高级研究人员
oracle,微软,vmware,MSC,Ansys,candence,Altium,达索等大型公司高级工程师,项目经理,技术支持专家
中科信软培训中心,资深专家或讲师
大多名牌大学,硕士以上学历,相关技术专业,理论素养丰富
多年实际项目经历,大型项目实战案例,热情,乐于技术分享
针对客户实际需求,案例教学,互动式沟通,学有所获
报名表下载
联系我们 更多>>

咨询电话010-62883247

                4007991916

咨询邮箱:soft@info-soft.cn  

 

  微信咨询

随时听讲课

聚焦技术实践

订制培训 更多>>