上一篇曾提及XAML中,每个对象元素的声明是对.NET类进行一次实例化操作。XAML作为声明类语言,如何识别对象元素,并如何在.NET Framework中找到对应映射类呢?本篇将引入命名空间(NameSpace)的概念,涉及内容如下:
- NameSpace命名空间格式
- 核心NameSpace命名空间
- 设计类NameSpace命名空间
- 自定义NameSpace命名空间
- XAML命名空间的x:Class属性
- XAML命名空间的x:Name属性和x:Key属性
- XAML的x:ClassModifier属性和x:FieldModifier属性
- Silverlight命名空间和Windows 8命名空间的不同
XAML命名空间的概念和C#代码中的Using,VB.Net代码中的Import相似,其作用是为对象元素的实例化提供引用类库声明。
简单的理解,当在XAML页面中需要调用某控件对象时,需要提前对该控件对象的类库进行引用声明,而定义XAML命名空间是类库引用声明的一种方法。
本篇将使用Visual Studio 11创建一个简单的Silverlight 5项目,通过对比Windows 8和Silverlight项目的命名空间,帮助理解命名空间的使用。
项目名:XamlGuideSL
Visual Studio 11生成的Silverlight 5默认命名空间代码如下:
对比上一篇Windows 8实例的命名空间代码:
通过比较以上两个命名空间定义,我们可以发现Windows 8和Silverlight 5具有类似的命名空间,例如:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc= http://schemas.openxmlformats.org/markup-compatibility/2006
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc= http://schemas.openxmlformats.org/markup-compatibility/2006
在移植Silverlight项目到Windows 8平台过程中,WinRT XAML可以兼容Silverlight XAML代码,轻松实现应用平台移植。