您的位置:首页 > 其它

Windows phone8 基础篇(二) xaml介绍 一 推荐

2013-03-28 23:42 387 查看
这两天不留神把右手中指给伤了,打字工作干啥都不方便,有点小郁闷,整理资料也受到了一些影响。不发牢骚了。

在windows Phone开发中,他使用的是silverlight框架,他的应用界面都是由xaml构成,他就相当于Android中的xml文件。在微软的设计理念中,Code-Behind(UI与业务逻辑的分离)经典模式在这里的体现就是xaml与xaml.cs的文件的组合。那么在使用xaml开发的时候,我们首先得知道这玩意儿是啥,这玩意儿怎么用,这玩意儿有啥注意的地方。

3.1什么是xaml

Xaml是一种声明性标记语言,他类似于HTML和xml的结合体。这也是silverlight独有的语法结构。Xaml大体上呢也遵循xml语法规则,例如标签的成对出现,每一个元素都包含有一个名称或者多个属性。在xaml中,每个属性都和silverlight类库中定义的属性对应,每个元素都和silverlight中的类的名称所对应。比如说<.Button/>元素就对应System.Windows.Controls,Button.
因为xaml是一种纯粹的标记语言,这就意味着某个元素要处理一个事件时,需要触发该元素的特定属性来处理。他就类似于asp.net采用的代码后置,将显示的UI和业务逻辑相分离。
在开发xaml中,最好使用name属性来区分和定位一个元素,这样我们在业务逻辑中就可以通过这个属性名来访问该元素。

3.2声明一个xaml元素的四大原则

1.xaml是严格区分大小写的,元素和属性的名称必须严格遵守;
2.所有属性值,无论什么数据类型,都应该包含在双引号当中;
3.所有的元素必须是封闭的,也就是说一个元素必须有开始有结束。例如<Button .../>要么自我结束,要么成对出现<Button ...></Button>
4.最终的xaml必须是合格的xml文档。

3.3 xaml的作用

1.xaml是用于声明silverlight UI以及UI中元素的主要格式,通常项目中至少有一个xaml文件表示应用程序中用于最初显示的UI界面。其他xaml文件可能是声明资源或者是其他地方用到的UI界面。
2.Xaml是用于声明支持UI界面显示不同特效的样式和模板的格式,这些样式和模板用于silverlight 控件和UI的逻辑基础。
3.Xaml的出现可以使用在不同的UI设计器上,可以使用不同的设计器结合使用,达到最完美的效果
4.Xaml的出现简化了开发的流程,使做业务逻辑的兄弟和做UI设计的朋友基本上是互不干涉。
5.Xaml的出现可以保留更多的设计原型,方便这个可视化设计中出现的版本控制。
Xaml的常规作用是用于声明对象,这些对象的属性和对象----属性的关系。声明的对象由类类型的库提供支持,相关的库可以是以下任意一个:
1.silverlight核心库;
2.分布式库,他们是在包中再发布的SDK的一部分,或者也有可能是应用程序库的缓存选项;
3.第三方控件的自定义库;
4.用户自己创建的类库;
5.其他库。通过应用程序模型进行引用的库。

3.4xaml的语法

3.4.1 xaml的命名空间

命名空间:他的作用是确定如何解释引用编程实体的字符串标记,如果重复使用字符串标记,命名空间还可以解决多义性。他的存在使得编程框架能够区分用户声明的标记和框架声明的框架声明的标记,并通过命名空间来消除可能出现的标记冲突。其实简单理解就是两点,第一点,声明引用。第二点区分标记所属的空间。
在这里xaml使用标记中提供的xml样式命名空间声明(xmlns),并将命名空间格式表示的类型属性信息和程序集信息都都与特定的xaml命名空间关联。这也使得创建应用程序时,如果要读取xaml文件,就可以区分出标记以及标记的所属。
xaml文件始终在其根元素中声明一个默认的命名空间,如果有属于该默认空间的控件元素,就不必再进行前缀限定。
Xaml命名空间用于声明他们的特定元素,也就是在该UI上显示的那些控件,
一个默认的xaml命名空间声明提供了3项信息:
1.一个前缀,该前缀代表了所属的空间。如果限定到某一个元素上,证明该元素属于那片空间
2.在xaml命名空间中定义元素的后备类型的程序集,xaml处理器必须访问此程序集才能基于xaml声明创建对象,简单理解就是说xaml处理器如果要声明创建元素,就必须先访问其所属的那片空间。
3.该程序集中的一个CLR命名空间。CLR是公共语言运行时,Common Language Runtime)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。
在几乎每个xaml文件中声明一个特定的命名空间是针对元素的命名空间。太蛋疼了,这手里都各式各样的资料,每一份都不一样。总结的都好郁闷了。
常见的命名空间的构造“x:前缀”:
x:Key 为ResourceDictionary中的每个资源设置唯一ID
x:Class 为xaml提供代码隐藏的类的clr命名空间和类名称。并命名由标记便宜在应用程序模型中创建的类。
x:Name 处理xaml中定义的对象元素,为该元素指定唯一名称。

3.4.2 声明对象

一个xaml文件始终只有一个元素作为其根,该元素声明的一个对象将作为某些编程结构的概念跟。或者是应用程序的整个运行时定义的对象图。根据xaml语法,可以通过3钟方法在xaml中声明变量:
1.直接使用对象元素语法:使用开始结束标记将对象实例化为xml格式的元素,可以使用该语法声明根对象或者创建用于设置属性值得嵌套对象。
2.间接性使用属性语法:使用内联关键字符串声明对象。
3.可以用标记扩展
除了以等同于实例化对象的方式声明对象之外,XAML 中还提供了一些可用来引用现有对象的方法.这些对象可能在 XAML 的其他区域中定义,或者通过平台及其应用程序或编程模型的某种行为隐式存在。

3.4.2.1 使用对象元素语法声明对象

若要使用对象元素语法声明对象,需要使用以下模式编写标记,其中,objectName 是要实例化的类型的名称。 在本文档中,经常出现术语“对象元素用法”,这是用于用对象元素语法创建对象的特定标记的简称。
<objectName>
</objectName>
下面的示例是用于声明 Canvas 对象的对象元素用法。
<Canvas>
</Canvas>
许多 Silverlight 对象(例如 Canvas)可以包含其他对象。
<Canvas>
<Rectangle>
</Rectangle>
</Canvas>

为方便起见(且作为 XAML 与 XML 的一般关系的一部分),如果对象不包含其他对象,则可以使用一个自结束标记(而不是开始/结束标记对)来声明对象元素,如下面示例中的 <Rectangle /> 标记所示。
<Canvas>
<Rectangle />
</Canvas>

3.4.2.2 使用属性语法声明对象

在某些情况下,属性 (Property) 值并不只是语言基元(如字符串),此时可以使用属性 (Attribute) 语法来实例化设置该属性 (Property) 的对象,并初始化用于定义新对象的键属性 (Property)。

有时可以声明对象以及所包含的用于为构造提供初始值的内部文本。 在 XAML 中,这种方法和语法称为初始化文本。 从概念上来说,初始化文本类似于调用具有参数的构造函数,但内部的 XAML 分析器实现通常不按原意来完成。
初始化文本在 Silverlight 中很有用,用来设置某些结构的初始值。 如果在资源字典中创建结构示例,则可以使用此方法,因为您打算将该结构值共享给多个目标属性。 在某些结构中,您无法使用属性语法来设置结构的值。这个就相当于啥呢,个人理解就相当于他的text属性的默认值.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息