黑马程序员 XAML概述

原创 2013年12月04日 13:30:42
---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------
1.XAML(Extensible Application Markup Language 的简写,发音为“zammle)是用于实例化.NET对象的标记语言。尽管XAML是一种可以应用于不同问题领域的技术,但主要用于构造WPF用户界面。换句话说,XAML文档定义了再WPF应用程序中组成窗口的面板、按钮以及各种控件的布局。
XAML对于WPF不是必须的。但XAML为界面设计师和程序员的合作提供了可能。


2.XAML变体:包括以下几个子集:


WPF XAML包含描述WPF内同的元素,如矢量图形、控件以及文档。目前,他是最重要的XAML应用。


XPS XAML是WPF XAML的一部分,它为格式化的电子文档定义了一种XML表示方式。XPS XAML已经作为单独XML页面规格(XMLPager Specification,XPS)标准发布。




Silverlight XAML是一个用于Silverlight应用程序的WPF XAML子集。Silverlight是一个跨平台的浏览器插件,通过它可以创建具有二位图形、动画音频和视频的富Web内容。


WF XAML包括描述Windows够工作流基础(WF)内容的元素。




3.XAML编译


WPF使用BAML二进制应用程序标记语言编译XAML 来消除XAML的冗长性。




4.XAML基础:


在XAML文档中的所有元素都映射为一个.NET实例。元素的标签名也完全对应于类名。


与所有XML文档一样,可以在一个元素中嵌套另一元素。


可以通过属性-特性的方法设置每个元素的属性。在某些情况下,特性-属性方法不足以完成这一工作。对于这些情况,需要通过特殊的语法使用嵌套的标签——属性-元素方法。


XAML中有三种顶级元素(就是不能嵌套在其他元素中的根元素,同时和XML中的规则一样,一个文档必须只有一个根元素):W
indow元素


Page元素(该元素和Window元素类似,但是它可用于可导航的应用程序)
Application元素(该元素定义应用程序资源和启动设置)




5.XAML名称空间


在XAML文档中元素的标记名代表元素的实际类型,XAML解析器需要知道类位于哪个名称空间。


XAML文档解析名称空间是由XAML解析器完成的,XAML的名称空间的引入和XML的名称空间类似,用属性-特性方法,在一个元素的开始标签中,赋值xmlns属性,正如XML标准中的那样,一旦声明了一个名称空间,可以在标签内部的任何元素中引用该名称空间,默认名称空间不需要用namespace:element格式的引用方法,直接element就表示使用默认名称空间的类型。XAML中的名称空间可以映射到.NET中的多个实际的命名空间中去。例如每个文档都会有的名称空间http://schemas.microsoft.com/winfx/2006.xaml.presentation是WPF核心命名空间(提供了一些重要的 Windows Presentation Foundation (WPF) 基元素类、各种支持 WPF 属性系统和事件逻辑的类以及由 WPF 核心和框架更加广泛使用的其他类型。就是以System.Windows开头的命名空间中的一切类型)。它包含了所有WPF类,包括用于构建用户界面的控件。


http://schemas.microsoft.com/winfx/2006/xaml是XAML名称空间。它包含各种XAML使用特性,这些特性会影响文档的解释方式。这个名称空间被映射为前缀x。


小知识:在windows窗体编程中,窗体中的所有可视化内容都是控件。在WPF中,不再如此。可视化内容被称为元素(element),只有部分元素是控件(控件是哪些能够接收焦点并且能与用户进行交互的元素)。


小知识:命名元素,许多类定义了自己的Name属性(FrameworkElement基类就是一个例子,所有WPF元素都继承此类)。如果在标签中直接用类型的Name属性或使用XAML的标记扩展x:Name为元素定义名称,其效果是一样的。




6.XAML中的属性和事件


在XAML中你可以使用属性-特性赋值方法(简单属性的赋值方法)或使用属性-元素(复杂属性的赋值方法)对元素进行赋值,当然可以使用扩展标记,和附加属性来增加元素的属性数量。也可以为事件进行赋值,但方法名必须和事件的委托签名一致才行。对于含有特殊字符和空白的Content(开始标签和结束标签之间)可以使用字符实体和xml:space=“preserve"进行处理






7.XAML嵌套元素


XAML文档被拍成一棵巨大的嵌套的元素树。


在XAML文档中,由每个元素自身类型的实际定义决定如何处理嵌套的元素。在这种方式下,有三种机制中的一种进行实际处理工作,并且寻找符合自身的处理机制的顺序也是下面列出三种机制的顺序:


1)如果父元素实现了IList接口,解析器就会调用IList.Add()方法,并且为该方法传入子元素作为参数。


2)如果父元素实现了IDictionary接口,解析器就会调用IDictionary.Add()方法,并且为该方法传入子元素作为参数。当使用字典集合时,还必须设置x:Key扩展标记属性以便为每个条目指定一个简明。


3)如果父元素使用ContentPropertyAttribute特性进行了修饰,则解析器使用子元素设置对应的属性。




8.XAML的加载和编译


尽管XAML和WPF是相互补充的技术,但是他们也是相互独立的。因此,完全可以创建不使用XAML的WPF应用程序。


1)只使用代码。这是在visual studio 中为Windows窗体应用程序使用的传统方法。它通过代码语句生成用户界面。


2)使用代码和未编译的标记(XAML)。这种方式对于某些特殊情况是很有意义的,例如创建高度动态化的用户界面。这种方式在运行时使用System.Windows.Markup名称空间中的XamlReader类,从XAML文件中加载部分用户界面。


3)使用代码和编译过的标记(BAML)。对于WPF这是一种更好的方式,并且也是Visual Studio支持的一种方式。这种方式为每个窗口创建一个XAML模版,这个XAML被编译为BAML,并且被嵌入最终的程序集中。在运行时编译过的BAML被提取出来用于重新生成用户界面。


小知识:作为一条经验法则,所有继承自ContentControl类的控件只允许包含单一的嵌套元素。所有继承自ItemsControl类的控件都允许包含一个条目几何,该集合映射为控件的默写部分(例如条目列表或节点数)。所有继承自Panel类的控件都是用于组织多组控件的容器。ContentControl、ItemsControl和Panel基类都使用ContenProterty特性。




---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net

黑马程序员_我的Linux基础整理笔记

Linux Linux文件目录和分区 文件目录: /:根目录 /root:存放root用户的相关文件 /home:存放普通用户的相关文件 /bin:存放普通用户的可执行命令 /sbin:...
  • zhengzhongjie1990
  • zhengzhongjie1990
  • 2014年07月05日 17:08
  • 1526

黑马程序员学习笔记 Java的三大框架

如果做javaweb开发,spring是一定要学的,现在主流还是ssh,就是strurs+hibernate+spring,其中hibernate是持久层,用来持久化数据库操作的,如果不喜欢可以学点别...
  • Mr_April
  • Mr_April
  • 2015年07月03日 17:12
  • 1549

黑马程序员—黑马的学习环境没有亲身经历的人是很难体会的!!!

文章来源:黑马程序员,黑马论坛     公元2013年1月10号我拖着沉重的行李箱和对未来的憧憬来到了黑马,公元2013年6月7号我怀抱着满满的知识和对老师的不舍离开了黑马。到现在离开黑马也有一个...
  • heima_28
  • heima_28
  • 2014年08月26日 15:16
  • 1416

黑马程序员--Oracle学习_day06

----------  android培训 、java培训、期待与您交流! ---------- 学习目标:1,理解oracle的pl/sql的概念   2,掌握pl/sql编程技术(...
  • xpaibeyond
  • xpaibeyond
  • 2015年01月16日 14:28
  • 203

黑马程序员—怎么去黑马?吃住问题解答

文章来源:黑马程序员,黑马论坛
  • heima_25
  • heima_25
  • 2014年08月24日 13:24
  • 1143

黑马程序员--一个为进入黑马云六的C++屌丝的28个日夜

首先我要告诉大家,我是一个在大学学了三年C++的人,可能你们会问我,学C++不是挺好的?干嘛突然间要重新学习java呢?况且C++以后的发展不也挺好吗?        我应该怎么回答你们呢?这也是我...
  • heima_hb5
  • heima_hb5
  • 2014年08月22日 08:52
  • 2404

黑马程序员--一段给后者的面试总结

文章来源:黑马程序员, 北京之旅,行北京万事,通百姓生活。其实,我也是个农村出来的孩子,大学没毕业就来北京参加“黑马”,毕业之后,还是没有任何的机遇与机会让我能在那里一展雄威,这就是我们这些菜鸟的悲...
  • heima_hb6
  • heima_hb6
  • 2014年08月24日 13:51
  • 528

黑马程序员:Hibernate基础知识

android培训、java培训
  • u012159707
  • u012159707
  • 2013年09月26日 15:42
  • 587

关于我在黑马程序员培训毕业后的亲身体验

首先申明:我本人已经于2016年5月份在广州传智播客java培训完毕业,和黑马程序员官网没有任何的利益往来,也没有人出钱给我帮他们做软文推广,这是我在黑马程序员的亲身体验,不存在虚构。...
  • wjycgl
  • wjycgl
  • 2017年04月20日 15:27
  • 1662

真实大起底:一名黑马程序员的就业经历

写在前面的话:首先说明一下,我是黑马程序员Java09期的一名毕业学员,目前就职于北京汇***宇科技有限公司,起步月薪:10000元/月(福利不计)。我大学所学的是计算机专业,2014年毕业后直接进入...
  • itcast_cn
  • itcast_cn
  • 2016年05月17日 11:44
  • 11176
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员 XAML概述
举报原因:
原因补充:

(最多只允许输入30个字)