黑马程序员 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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

黑马程序员_003XAML文件的格式

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- XAML文件的格式 一、知识点概述...

黑马程序员_WPF(WPF认识,Sender,C#基础加强类继承,集合,Xaml,控件通用属性)

一.WPF认识 很多教程都是WinForm,但是Windows8平板电脑,Windows Phone手机开发都是使用微软的XAML技术,WPF也是一个采用XAML的类似于WinForm的技术,学习之...

黑马程序员_JAVA学习之概述

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

黑马程序员——第一天(Java概述)

---------------------- android培训、java培训、期待与您交流! ---------------------- 1.常见DOS命令 dir:  列出当前目录下...

黑马程序员JAVA笔记1--java基础和概述

------- android培训、java培训、期待与您交流! ---------- 一、基本常识 (1)软件开发 1 什么是软件?     软件:一系列按照特定顺序组织的计算机数据和指令的集合...

"黑马程序员"运算符的概述

1:运算符(掌握)  (1)算术运算符   +,-,*,/,%,++,--   +:正号,加法,字符串连接符   %:两数相除,得到余数   ++,--:    单独使...

黑马程序员---C语言基础---语句概述

------- android培训、java培训、IOS培训期待与您交流! ---------- 1、C语言的语句概述: (1)C语言的程序结构。 一个C语言程序可以由多个源程序文件组成。 一个源程序...

黑马程序员-[OC语言] 第八篇:foundation框架之 NSFileManager、NSDate概述

OC加强--第五天学习总结 1.NSFileManager介绍 NSFileManager是用来管理文件系统的。它可以用来进行常见的文件/文件夹操作。 NSString*filePath=@”/us...

黑马程序员------面向对象(No.4)(对象初始化过程、单例、继承概述、重写)

---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------  对象初始化过程 Person ...

黑马程序员——JavaIO—概述

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- Java IO相关的类(最顶层的) 类 说明 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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