读书频道 > 网站 > 网页设计 > 深入浅出:Windows Phone 8应用开发
3.2.1 XAML命名空间
13-01-21    奋斗的小年轻
收藏    我要投稿   
本书系统论述了Windows Phone 8操作系统的基本架构、开发方法与开发实践。全书内容共分三篇:开发基础篇、开发技术篇和开发实例篇。开发基础篇包括第1章~第3章,介绍了Windows Phone 8的技术架构及基本特性、...立即去当当网订购

3.2 XAML语法概述

编写XAML文件时,必须严格遵守XAML的语法,下面将介绍XAML的一些重要的语法。

3.2.1 XAML命名空间

按照针对编程的广泛定义,命名空间确定如何解释引用编程实体的字符串标记。如果重复使用字符串标记,命名空间还可以解决多义性。命名空间概念的存在使得编程框架能够区分用户声明的标记与框架声明的标记,并通过命名空间限定来消除可能的标记冲突,等等。XAML命名空间是为XML语言提供此用途的命名空间概念。就XAML的常规作用及其面向Silverlight的应用程序而言,XAML用于声明对象、这些对象的属性和对象?属性关系(表示为层次结构)。声明的对象由类型库提供支持,相关的库可以是以下任意一项:

(1) Silverlight核心库(任何分布式运行时都提供);

(2) 分布式库,它们是在包中再分发的Silverlight SDK的一部分(可能带有应用程序库缓存选项);

(3) 表示应用程序中融入的和应用程序包再分发的第三方控件的定义的库;

(4) 用户自己的库,这是用户通过Silverlight项目创建,用于容纳某些或所有应用程序的Silverlight用户代码的库;

(5) 其他库,即用户在单独的项目中定义,通过Silverlight应用程序模型进行引用的库。

XAML命名空间概念使用标记中提供的XML样式命名空间声明(xmlns),并将以CLR命名空间格式表示的后备类型信息和程序集信息与特定的XAML命名空间关联。这使得读取XAML文件的XAML处理器能够区分标记(markup)中的标记(token),并且在创建运行时对象表示形式时,该处理器能够从与该XAML命名空间关联的后备程序集中查找类型和成员。

XAML文件几乎始终在其根元素中声明一个默认的XAML命名空间。默认XAML命名空间定义可以声明哪些元素,而无需通过前缀进一步进行限定。例如,用户声明一个元素<Balloon/>,则该元素Balloon应存在且在默认XAML命名空间中有效。相反,如果Balloon不在所定义的默认XAML命名空间中,则必须转而使用一个前缀来限定该引用。例如,<party:Balloon/>,该前缀指示此实体存在于与默认命名空间不同的XAML命名空间中,尤其是,用户已将某个XAML命名空间映射到前缀party以便于使用。

XAML命名空间应用于声明它们的特定元素,同时应用于XAML结构中该元素所包含的任何元素。因此,XAML命名空间几乎始终在根元素上声明,以充分利用此继承概念。

来自除Silverlight核心库之外的其他库的类型将要求用户使用前缀声明和映射XAML命名空间,然后才能从该库中引用类型。针对默认命名空间之外的其他XAML命名空间的XAML命名空间声明提供了3项信息:

(1) 一个前缀,它定义用于在后续XAML标记中引用该XAML命名空间的标记(markup)标记(token);

(2) 在该XAML命名空间中定义元素的后备类型的程序集,XAML处理器必须访问此程序集才能基于XAML声明创建对象;

(3) 该程序集中的一个CLR命名空间。

SDK库具有CLR特性,以便加载程序集的设计器可以建议使用特定的前缀。在Visual Studio中,对于已由某个项目引用的任何程序集,都可以使用自动完成功能从所引用的程序中读取CLR特性。这一Visual Studio功能要么将所有可能的XAML命名空间显示为下拉列表,要么使用建议的前缀作为提示以帮助建议特定的映射选择。

在几乎每个Silverlight XAML文件中声明的一个特定的XAML命名空间是针对由XAML语言定义的元素的XAML命名空间。根据约定,XAML语言XAML命名空间映射到前缀x:。Silverlight项目的默认项目和文件模板始终同时将默认的XAML命名空间(无前缀,只有xmlns=)和XAML语言命名空间(映射到前缀x:)定义为根元素的一部分。例如:
< phone:PhoneApplicationPage
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
...>

“x:前缀”类型的命名空间包含多个将在SilverlightXAML中频繁使用的编程构造。下面列出了最常见的“x:前缀”类型的命名空间构造:

(1) x:Key: 为ResourceDictionary中的每个资源设置一个唯一键。

(2) x:Class: 指定为XAML页提供代码隐藏的类的CLR命名空间和类名称,并命名由标记编译器在Silverlight应用程序模型中创建的类。必须具有一个这样的类才能支持代码隐藏或支持初始化为RootVisual。

(3) x:Name: 处理XAML中定义的对象元素后,为运行时代码中存在的实例指定运行时对象名称。对于不支持FrameworkElement.Name属性的情形,可以将x:Name用于元素命名方案。默认情况下,通过处理对象元素而创建的对象实例没有可供在代码中使用的唯一标识符或固有的对象引用。在代码中调用构造函数时,几乎总是使用构造函数结果为构造的实例设置一个变量,以便以后在代码中引用该实例。为了对通过标记定义创建的对象进行标准化访问,XAML定义了x:Name属性。可以在任何对象元素上设置x:Name属性的值。在代码隐藏文件中,所选择的标识符等效于引用构造实例的实例变量。在任何方面,命名元素都像它们是对象实例一样工作(此名称只是引用该实例),并且代码隐藏文件可以引用该命名元素来处理应用程序内的运行时交互。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站