在前面的一段时间里,我先后发布了几篇WPF企业内训全程实录的文章,由于内容涵盖面广且文章内容较多,所以花了十多个晚上的时间才完成。为了提高阅读质量,我把它拆分成了三篇:
上篇WPF企业内训全程实录(上)主要讲解历史渊源、概念引入、基本阐述以及WPF的每个知识点。
中篇WPF企业内训全程实录(中)主要围绕WPF开发模式、WPF团队协作和MVVM框架三个议题进行阐述。
下篇WPF企业内训全程实录(下)着重强调结合其他技术共同打造WPF项目、相关性能优化、以及部署与更新问题。
之前由于没有找到合适的托管站点,所以一直没有公布资源下载地址。期间有很多朋友发邮件索取此资源,所以在这里就统一发布出来,希望对大家能起到参考和帮助作用!
一,整体概览
下面这幅图是我在半年前写的一份PPT,因为公司要求用英文表述,所以写的很简约,重点在于结合代码实例进行学习。
因为上面的PPT基本涵盖了WPF的所有重要知识点,所以得为每一个知识点准备相关的Demo,只有这样才能把每个知识点完全讲透,否则只能起到云里雾里、不知所云的效果。如下便是与之配套的Demo截图:
上面的代码包中主要包括:
WPFBasic:主要讲解WPF的基础概念,涵盖了WPF的方方面面。
WPFPatterns:强调Presentation模式的重要性,主要包括MVC/MVP/MVV以及一些MVVM的框架。
WPFProject:具体项目中如何把握,如何引用之前的技术和经验。
WPFTools:一门技术都有与之相应的开发、管理、协助工具,WPF也不例外。
WPF.PPT:这里是一些简单的介绍,熟悉的可以略过。
这些Demo主要来源于两个方面,一是自己写了一些;二是改编了网络上的一些素材;如果大家仔细看,可以发现它涵盖了WPF的方方面面,并且对重点和难点也做了区别对待。
二,细节概述
WPF的基础知识和框架相关细节,可以用以下这幅图进行简要概括:
1,基础概念
从2007年开始接触WPF/Silverlight以来,对学习和使用它们有自己的一些浅薄心得,所以首先让我们来看看WPF的各个基础概念:
-
Application、Window、Navigation、Dispatcher: 这里强调一个应用程序的基本组成部分,也就是说它是每一个项目都会遇到的概念!
-
框架结构及类继承结构: 没有一个宏观的认识作为灯塔,是一件很危险的事情,尤其在做深入研究的时候!
-
XAML基础: 作为WPF的主打概念,它似乎起着不可估量的作用,这也是大家接触WPF的首要概念!
-
布局基础: 每一个应用程序,如果没有良好的布局,似乎是一个不可想象的事情,在WPF中提供了很多布局元素,同时也提供了很多扩展点!
-
WPF的逻辑树和视觉树: 它很有作用,但也很头痛,很多错误不得不归功于它!
-
依赖属性、路由事件、Binding、命令: 核心中的核心,所以我们把它列为重点讲解对象,后面分开阐述!
-
资源、样式、模板: 在很多程度上,它吸取了之前WEB方面的优势,这三个功能在很大程度上提高了复用,同时也规范了项目!
-
尺寸缩放、定位与变换元素: 由于是矢量元素,所以在做各种图形图像操作的时候就比较如鱼得水!
-
WPF控件分类介绍与使用技巧: 微软的每一种UI相关的技术都会伴随强大的控件库,有了它们可以大大减轻开发的难度!
-
用户控件和自定义控件开发: 和WinForm、ASP.NET一样,开发自定义控件也很简单且类似,这里强调控件的多种分类以及区别对待!
-
多语言、皮肤和主题: 开发一个稍微大型的应用程序都会遇到多语言、皮肤和主题,在WPF中做这些元素也非常简单!
-
2D图形: WPF创建和使用2D图形主要集中在3个重要的数据类型之上——Drawing,Visual,Shape,所以需要分别进行研究!
-
3D图形: WPF之所以能带来绚丽且强大的3D图形功能,这得归功于DirectX 技术,并且提供的接口也非常简单,这也使大量动画应用成为可能!
-
动画(几种动画的应用):动画无疑是WPF中最吸引人的特色之一,因为一想到动画大家可能都会提到Flash,WPF的确也使动画变得非常简单!
-
音频、视频、语音: 这里强调的影音相关的功能,由于直接使用DirectX,所以较之前的技术,WPF在显示效果和质量上可谓是质的飞跃!
-
文档、打印、报表: 强调企业使用的一般功能,在WPF中也得到了很好的实现,这也是大量管理应用程序使用WPF的前提!
-
Win32、Windows Form以及ActiveX之间的互用性:这里强调与其他技术之间互用的兼容性,当然,在WPF中对这些技术提供了很好的支持!
-
部署及更新应用程序:和其他客户端技术一样,WPF的部署与自动更新也比较容易,除了传统的三种方法以外,还提供了XBAP的方式,不过已经逐渐被Silverlight所取代。
-
WPF的开发模式:其他层可以保持不变,针对Presentation提供了MVC 模式、MVP模式 、MVVM 模式。
-
项目和性能相关:WPF在诸多方面都做得很好,除了满足其他客户端技术的功能外,也有自己的独特一面。在性能方面,只要多注意一些细节,就可以超过预期的满足企业的需求。
2,核心概念
可以看到上面的基础概念很多,但圣殿骑士认为核心概念主要有以下三点:
A,依赖属性体系
首先从依赖属性基本介绍讲起,然后过渡到依赖属性的优先级、附加属性、只读依赖属性、依赖属性元数据、依赖属性回调、验证及强制值、依赖属性监听、代码段 (自动生成) 等相关知识,最后我们会模拟一个WPF依赖属性的实现,来看看它里面的内部究竟是怎样处理的,这样就可以帮助我们更好的认清它的本质,出现问题的时候我们也可以根据原理快速找到原因。
B,事件体系
讲到WPF事件体系,我们就不得不来一场短暂旅行,由于圣殿骑士之前是从C和C++过渡到.NET和JAVA,所以对Win32程序有一些粗浅的认识,不管是Win32/C++还是MFC/C++,在窗体和事件处理上本质都是用消息(Message)来进行通信,只不过MFC对这些繁杂和通用的代码进行了一些封装,到WinForm和WPF也不例外,无疑底层还是通过这些消息在传递操作。有了 Win32->MFC->WinForm->WPF这种Message的演变之后,我们必须得认识其中的一些核心概念,比如函数指针、委托回调、委托和事件以及现在提的路由事件。由于这些知识太多,所以不进行深究,在这里我们只研究委托和事件的一些知识、委托和事件实现原理、路由事件的原理以及路由事件的使用,通过这么一来回,可能大家会对路由事件有一个比较清晰的认识,最主要的是能在项目中运用自如。
C,Binding
前面讲了WPF的依赖属性体系和事件体系,这里再讲第三个核心概念——Binding,WPF 绑定可以在源数据对象和UI 控件间建立联系,实现单向或双向变更通知,以此实现更好的业务逻辑和UI的分离。也正是因为Binding,才使得UI和业务逻辑的耦合隔离变得如此轻松,也正是因为Binding,我们才实现了MVVM模式,所以Binding在这个过程中起到了核心作用。同时我们也要注意到Binding的知识点非常多,所以就分成三大块来讲解。
三,资源下载
直接点击进入资源下载 WPF公司内训.rar
另外如果有不懂的地方也可以参考之前写的WPF 基础到企业应用系列,最后声明一下,由于圣殿骑士才识浅薄,所以以上观点只是个人的看法与心得,遗漏和错误之处也敬请海涵。怀着技术分享与交流的态度分享出来,希望各位多多指教!
分享到:
相关推荐
圣殿骑士的WPF培训资料;包括示例代码,用了N种办法才下载到的,目的是和大家共同分享;
WPF 列表选择,动态调用ResourceDictionary内资源
本文告诉大家如何在 WPF 获取资源文件包含 # 号的文件资源
Windows Phone开发公司内部资料,让你第一时间掌握WPF企业开发的实用 资料
WPF企业培训资料文件 可以下载看看.
VS2008 WPF经典教程-WPF资源......
Wpf 加载 Cur资源,一个简单的源码操作
利用资源字典和资源文件来实现项目的多语言功能。资源字典实现窗体文字语言转换,资源文件实现MessageBox文字语言转换
官方实例,WPF实例程序,命令,动画,资源,样式及模板,本地化,拖拽,绑定,希望对初学WPF的童鞋有用...
wpf-资源的使用-resource
c# WPF实现Windows资源管理器(附源码).docx
学习wpf的优秀资源,有学习的小盆友可以看看。精辟分析WPF源代码,洞察功能背后隐藏的深刻设计理念。
WPF资源文件在DLL中的用法 把资源文件压缩到DLL中。 两种方式访问! 在主程序中调用方法!
winform调用全局wpf资源样式,可以调用相对路径的xaml也可以调用绝对路径的xaml。
WPF实现断点续传下载,C#实现断点续传下载。支持断网、杀进程、重启下载客户端。
wpf的学习资源下载知识,帮助你在wpf中的学习
WPF样式静态资源绑定
压缩包里包括WPF的视频资源和WPF的文档资料,满足入门学习,欢迎下载使用,
有许多同学在写WPF程序时在资源字典里加入了其它控件,但又想写事件来控制这个控件 怎么办呢?
Wpf下载网络文件到本地指定路径(简单示例)