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.命名空间: 避免了元素和属性的重名问题
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
|