1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,Copyright,by ARTCOM PT All rights reserved.,www.art-com.co.kr,Company,Logo,WPF,基础知识讲座,主要内容,WPF,介绍,XAML,介绍,布局,(Layout),控件
2、Controls),资源,(Resources)&,样式,(Styles),WPF(Windows Presentation Foundation),是微软新一代的显示系统,用于生成能带给用户震撼视觉体验的,Windows,客户端应用程序。,WPF,的核心是一个与分辨率无关并且基于向量的呈现引擎,为用户界面、,2D/3D,图形、文档和媒体提供了统一的描述和操作方法。基于,DirectX,技术的,WPF,不仅带来了前所未有的,3D,界面,而且其图形向量渲染引擎也大大改进了传统的,2D,界面。,WPF,介绍,WPF,介绍,对于用户,最基本、最重要的需求是:需要易于操作的,更好视觉效果的界面。对
3、于开发人员要用最简单的方法开发出尽可能漂亮的界面,给用户带来好的体验。,WPF,满足了二者的需求。,WPF,常用的控件类结构,System.Object,类:在,.Net,中所有类型的根类型,System.Windows.Threading.DispatcherObject,类:,WPF,中的大多数对象是从,DispatcherObject,派生的,这提供了用于处理并发和线程的基本构造。,WPF,基于调度程序实现的消息系统。,System.Windows.DependencyObject,类:表示一个参与依赖项属性系统的对象。,System.Windows.Media.Visual,类:为,W
4、PF,中的呈现提供支持,其中包括命中测试、坐标转换和边界框计算。,System.Windows.UIElement,类:,UIElement,是,WPF,核心级实现的基类,该类建立在,Windows Presentation Foundation(WPF),元素和基本表示特征基础上。,WPF,常用的控件类结构,System.Windows.FrameworkElement,类:为,Windows Presentation Foundation(WPF),元素提供,WPF,框架级属性集、事件集和方法集。此类表示附带的,WPF,框架级实现,它是基于由,UIElement,定义的,WPF,核心级,A
5、PI,构建的。,System.Windows.Controls.Control,类:表示 用户界面,(UI),元素的基类,这些元素使用,ControlTemplate,来定义其外观。,System.Windows.Controls.ContentControl,类:表示包含单项内容的控件。,System.Windows.Controls.ItemsControl,类:表示一个可用于呈现项的集合的控件。,System.Windows.Controls.Decorator,类:提供在单个子元素(如,Border,或,Viewbox,)上或周围应用效果的元素的基类。,WPF,常用的控件类结构,Sys
6、tem.Windows.Controls.Image,类:表示显示图像的控件。,System.Windows.Controls.MediaElement,类:表示包含音频和,/,或视频的控件。,System.Windows.Controls.Panel,类:为所有,Panel,元素提供基类。使用,Panel,元素在,Windows Presentation Foundation(WPF),应用程序中放置和排列子对象。,System.Windows.Sharps.Sharp,类:为,Ellipse,、,Polygon,和,Rectangle,之类的形状元素提供基类。,WPF,常用的控件类结构,大
7、家有疑问的,可以询问和交流,可以互相讨论下,但要小声点,大家有疑问的,可以询问和交流,可以互相讨论下,但要小声点,WPF,应用程序,创建了一个,WPF,应用程序,模板中文件层次结构如图所示(在,References,里面自动引入了图中的,PresentationCore,、,PresentationFramework,、,WindowsBase,程序集),WPF,应用程序,WPF,应用程序,WPF,应用程序,MVVM,模式,MVVM,就是,Model View ViewModel,三组功能(类)分割的设计模式。,View,为前台显示的界面,主要包括,Window,窗体和,Page,;,Mode
8、l,为生活中抽象出来的类,如学生、班级等;,ViewModel,获取数据库数据,结合,Model,组织界面展示的数据并为前台界面的绑定提供数据。,界面调用,ViewModel,中的数据。,什么是,XAML,XAML,是一种声明性标记语言。如同应用于,.NET Framework,编程模型一样,,XAML,简化了为,.NET Framework,应用程序创建,UI,的过程。您可以在声明性,XAML,标记中创建可见的,UI,元素,然后使用代码隐藏文件(通过分部类定义与标记相连接)将,UI,定义与运行时逻辑相分离。,XAML,直接以程序集中定义的一组特定后备类型表示对象的实例化。这与大多数其他标记语
9、言不同,后者通常是与后备类型系统没有此类直接关系的解释语言。,XAML,实现了一个工作流,通过此工作流,各方可以采用不同的工具来处理应用程序的,UI,和逻辑。,XAML,结构,对象元素:,对象元素语法始终以左尖括号,(),结尾。您也可以使用不含任何内容的自结束形式,方法是用一个正斜杠后接一个右尖括号,(/),来完成标记。,如:,Click,或者,XAML,语法概述,特性语法(属性):,对象的属性通常可表示为对象元素的特性。特性语法命名在特性语法中设置的属性,后跟赋值运算符,(=),。特性的值始终以包含在引号中的字符串的形式进行指定。如:,属性元素语法,:,对于对象元素的某些属性,特性语法是不可
10、能实现的,因为无法在特性语法的引号和字符串限制内充分地表达提供属性值所必需的对象或信息。对于这些情况,可以使用另一个语法,即属性元素语法。,XAML,语法概述,如:,Click,XAML,语法概述,附件属性:,XAML,指定了一个语言功能,该功能允许对任何元素指定某些属性,而不管要设置属性或事件的元素的类型定义中是否存在该属性。,left,XAML,语法概述,XAML,语法概述,标记扩展:,标记扩展是一个,XAML,语言概念。当用于提供特性语法的值时,大括号(,和,)表示标记扩展用法。此用法指示,XAML,处理系统不要像通常那样将特性值视为一个文本字符串或者可转换为字符串的值。如:,布局,(L
11、ayout),Canvas,StackPanel,WrapPanel,DockPanel,Grid,布局,(Layout),控件,(Controls),Windows Presentation Foundation(WPF),附带了许多几乎在所有,Windows,应用程序中都会使用的常见,UI,组件,如,Button,、,Label,、,TextBox,、,Menu,和,ListBox,。以前,这些对象被称为控件。现在,,WPF SDK,继续使用术语“控件”泛指任何代表应用程序中可见对象的类。请注意,类不必从,Control,类继承即可具有可见外观。从,Control,类继承的类包含一个,Co
12、ntrolTemplate,,允许控件的使用方在无需创建新子类的情况下根本改变控件的外观。,创建控件的实例,更改控件外观,更改控件的属性值。,为控件创建,Style,。,为控件创建新,ControlTemplate,。,更改控件的属性值,许多控件具有允许您更改控件外观的属性,例如,Button,的,Background,。可以在,XAML,和代码中设置值属性。下面的示例在,XAML,中设置,Button,的,Background,、,FontSize,和,FontWeight,属性。,为控件创建样式,利用,WPF,,通过创建,Style,,您可以同时为许多控件指定相同的外观,而不是在应用程序中
13、设置每个实例的属性。下面的示例创建一个,Style,,它可以应用于应用程序中的每个,Button,。,创建,ControlTemplate,利用,Style,,可以一次为多个控件设置属性,但有时除了通过创建,Style,可执行的操作之外,您可能想要自定义,Control,的外观。从,Control,类继承的类具有,ControlTemplate,,它用于定义,Control,的结构和外观。,Control,的,Template,属性是公共的,因此您可以为,Control,指定非默认,ControlTemplate,。通常,您可以为,Control,指定新的,ControlTemplate,(而
14、不是从控件继承)以自定义,Control,的外观。,资源,(Resources),资源概述,资源的定义和引用,XAML,解析资源顺序,静态资源,(StaticResource),和动态资源,(DynamicResource),资源概述,通过一种简单的方法来重用通常定义的对象和值。,在,WPF,中资源通常用作“样式”(,Style,)、样式模板、数据模板等。,定义一种可以复用的单色的,Brush,对象,按钮的背景及矩形的填充颜色均使用此,Brush,资源的定义和引用,应用程序级资源,窗体级资源,文件级资源,对象,(,控件,),级资源,应用程序级资源,定义在,App.xaml,文件中,作为整个应用程序共享的资源存在。,窗体级资源,定义在,Window,或,Page,中,作为一个窗体或页面共享的资源存在。,文件级资源,定义在资源字典的,XAML,文件中,再引用 在,Visual Studio,的,WPF,应用程序项目中,添加“资源字典(,Resource Dictionary,)”类型的项。,文件级资源,在窗体中,将其注册为窗体级的资源,并引用。,






