由于.NET 2.0和3.0共享同样的CLR,在.NET 2.0中编写的任何程序都可以运行于.NET 3.0中,这是和以前版本的一个重要而显著的区别。以改变来看,对于那些喜欢代数方程的人来说,它们之间的关系可以总结为下面的公式:
.NET 3.0 = .NET 2.0 + WCF + WPF + WCS + WF
.NET Framework 3.0通过4个关键的、以标准为基础的支柱来对应我们客户要求和验证的领域,以达成上述目标。它也包含了一个重要的叫做XAML的新语言。XAML是一个基于XML的声明性语言,通过XML定义对象和它们的属性,允许客户声明性地开发工作流(WF)和身临其境的用户体验(WPF)
Windows Presentation Foundation试图弥合在游戏和娱乐产业中常见的身临其境的用户体验和在业务软件世界中静态又难用的界面之间的差距。WPF利用XAML让你无需成为图形设计师就能尽情地开发下一代界面。
从构架的角度看,WPF通过分离图形元素和业务逻辑来保持一个非常清晰的划分。一个设计师可以使用Expression产品线和XAML来创建视图,而开发人员可以使用Visual Studio和C#来编写代码。
近年来另外一个需要更多关注的技术是SilverLight。SilverLight不是.NET 3.0框架的一部分。SilverLight是一个具有自己运行时的跨浏览器、跨平台的插件,它用于开发下一代微软基于.NET的多媒体程序和丰富交互的Web应用程序,他是微软与Flash竞争的有力产品。
本WPF培训课程(应用与实践部分)主要详细讲解了如何基于.NET 3.0架构来开发WPF应用程序。.NET 3.0及其包含的新组件的含义、系统环境的安装设置、XAML语言及控件的使用,WPF应用程序编程中的重要技术:布局、容器、窗口与导航、、控件、XAML、输入输出、事件模型、数据绑定,等,力求将每一个技术点深入浅出,娓娓道来。
本次培训针对有初步C#语言基础的朋友,最少学习过C#2.0,学过C#3.0就更好了,课程讲解过程中结合典型的实例,逐一剖析,帮助大家快速掌握和精通WPF编程思想和技巧,提高编程能力和水平,并掌握SilverLight的金钥匙。
该课程每节课45分钟,共40课时,教学方法:采用手把手,现场敲写的方式,全程展示代码从无到有的过程。
开发环境: Microsoft Visual Studio 2008+Microsoft SQL Server 2005
您即将要学到的技术如下:(真正的物有所值)
1、WPF 体系结构
a)WPF(Windows Presentation Foundation)Windows 表现层
b)历史变迁
i.C++ /VB ---2003年之前----与Sun竞争
ii.DotNet平台(C#、VB、C++) C#(C->C++->C#/CSharp)
iii.开发工具Visual Studio2003->vs2005->vs2008->vs2010
iv.开发语言C#1.0(CLR)->C#2.0(匿名、泛型)->C#3.0(LinQ、Lambda)->C#4.0
v.运行时环境DotNet Framework1.1->2.0->3.5->…(托管代码处理GDI,调用底层的OS下的API(如user32.dll))
vi.推出背景:配合下一代OS技术(Window Seven/Vista)(非托管代码处理DirectX,矢量技术,性能受影响)
vii.与Window Form孑然不同
c)见图:绘图使用DirectX技术
2、WPF 应用程序管理、事件、生命周期
a)Application启动
i.Startup事件订阅加载方法
this.Startup += new System.Windows.StartupEventHandler(this.Application_Startup);
ii.设定Application的StartupUri
b)关闭
i.当我们启动了很多窗口的时候,这些窗口继宿在主线程内,当所有窗口关闭时,应用程序自动退出
ii.Application.Current.Shutdown();不同于this.close();
iii.常见事件
iv.生命周期见图
v.源代码MSIL机器语言(先编译后解释)
3、WPF 窗体与导航—基于代码
a)项目常见设置
i.AssemblyInfo.cs中设置产品信息(描述,版本…)
ii.设置产品图标*.ico,程序集名
b)常见属性、方法、事件
i.属性
1.Tilte:标题
2.Icon:窗口
3.ResizeMode:是否能最大化、最小化、拉伸窗口边框
4.WindowStyle:设置窗口的外部样式
5.WindowStartupLocation:窗口启动后出现的位置
6.Opacity:设置透明度
7.Topmost:窗口将永远置于最顶层.
9.Left、Top、Width、Height:设置窗口呈现的坐标以及大小
10.Forground/Background:设置前、背景色
11.Font---:字体的相关信息
12.IsEnabled:设置对象是否启用/禁用
13.Tag:任何对象隐藏的属性,可用于保存一些额外的信息
ii.方法
1.Show()
2.ShowDialog():窗口的返回值由DialogResult来设置
3.A窗口向B窗口传递值:
a)在B窗口中设置一个属性,然后A窗口中实例化B时,赋值给B中的该属性(在多窗口中传值不频繁的时候使用,以及传递的数据并不多的时候)
b)定义一个静态类,以及若干静态成员,然后通过get/set访问器来实现获取或设置值(在多窗口之间频繁的传递值,以及窗口之间传递值过多时)
iii.事件
iv.SystemParameters获取系统的环境设置信息
v.
c)模式与非模式窗口
d)基于页面的用户界面
类似于java中的 Applet程序,在一个沙箱内部运行WPF的程序,对外部数据的访问受限制,从而达到安全目的。
与SilverLight的区别: SilverLight利用页面插件来工作的,XBP则是运行在CLR之上的程序.
e)导航服务
i.页面跳转的方式:
1.内部标签<Hyperlink>来实现跳转
2.导航服务来实现跳转
ii.其他的设计与WPF下的设计雷同
f)不规则窗体
i.绘图标签
ii.窗体过滤
g)消息框
i.MessageBox.Show(x,y,z,m,n)
4、XAML 与XML
a)XAML数据
i.XAML是XML的子集,遵循了XML的语言结构
ii.XML是可拓展的标记语言,也是元语言,XAML就是在XML的基础上拓展而来
iii.XAML基本规范:
1.标记是成对出现的.<标记>数据</标记>
2.标记区分大小写
3.只有唯一的根元素<Window></Window>
4.标记支持嵌套,呈现出父子元素关系
5.每一个元素的名称、属性名都是有意义的
6.如果元素内部无数据,那么<Image> </Image>可改写为<Image/>,称为空元素
7.XAML中Window的子级元素仅有一个
8.命名空间: 避免了元素和属性的重名问题
a)xmlns:digital="http://www.digicam.org"定义了一个命名空间的缩写digital指代http://www.digicam.org命名空间
b)xmlns= "http://www.Aptech_edu.ac"定义了一个默认命名空间,当元素未指定命名空间的时候,都为该命名空间http://www.Aptech_edu.ac下的元素
c)命名空间是一种逻辑位置,相当于URI的作用,不是物理位置.
b)XML结构Schema与XAML
i.在XML体系中,分三部分(XML数据+DTD/Schema结构+XSL/XSLT样式),在XAML中,数据与结构是合并在一起。
ii.XAML中元素的结构是比较固定的,数据穿插在结构内部,作为元素的一部分
iii.XAML是遵循Schema结构的
c)Dom文档结构
i.XML文档被编译器解释时,将转化为树模型,XAML中同理
ii.查看文档大纲可查看XAML中元素树的结构
d)XAML分析
i.XAML语言与XML语言的关系。
XAML是XML的子集,XAML中,元素结构也是由Schema决定
ii.XAML语言与代码后置
iii.XAML文档树
iv.x命名空间
(x:Class, x:Name, x:Key, x:Shared,x:Type,x:Static,x:Array, x:Null)
v.XAML浏览器应用程序XBAP
vi.WPF的结构文件 Schema位置:
C:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas\wpfe.xsd
C:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas\xaml2006.xsd
vii.Xsd分析
1.元素类型
a)复合类型: <xs:complexType>有从属的子元素
b)简单类型: <xs:simpleType>,没有从属的子元素
2.数据类型
a)元素<xs:element>
b)属性<xs:Attribute>
3.Xsd片段分析
a)这里定义了元素Image的子元素和属性的结构
5、WPF输入输出、焦点行为
a)键盘类和键盘事件
b)鼠标类和鼠标事件
c)焦点行为处理(键盘焦点、逻辑焦点、键盘导航)
6、WPF容器、布局
a)StackPanel、WrapPanel、DockPanel
i.StackPanel:堆叠布局,可选择横向或纵向的排列循序
ii.WrapPanel:流式布局
iii.DockPanel:方位布局
b)Grid、 UniformGrid
a)Grid:表格布局,多行多列结构,可实现跨行或跨列
7、WPF控件模型
1.ContentControl 模型:具有 Content属性
a)Content中元素可以是数据,也可以是子元素,注意子元素是单个元素
参阅C12中Demo01.xaml
b)ContentControl继承关系: 参阅C12中Demo01.xaml
c)控件详解:
1)Button元素: 参阅C12中Demo02.xaml
2.HeaderedContentControl 模型
3.ItemsControl模型
4.HeaderedItemsControl 模型
8、WPF内容模型
1.Panel内容模型
2.Decorator内容模型
3.TextBlock模型
4.Text模型
9、WPF数据绑定
5.绑定源与绑定目的区分
6.绑定源的分类,绑定语法
7.数据模板
8.WPF绑定ADO.NET数据源
9.WPF绑定到LINQ