XAML使用xmlns XML属性来进行名称空间声明。 本文将介绍XAML命名空间语法,并演示如何声明XAML命名空间以访问类型。
默认名称空间指定在XAML文件中定义的,没有前缀的元素引用Xamarin.Forms类,如ContentPage。
第二个名称空间声明使用x前缀,如下面的XAML代码示例所示:
XAML使用前缀声明非默认名称空间,在引用名称空间内的类型时使用前缀。 x命名空间声明指定在XAML中使用前缀x定义的元素用于XAML固有的元素和属性(特别是2009 XAML规范)。
下表列出了Xamarin.Forms支持的x名称空间属性:
或者,这可以写成:
本地前缀是用来表示名称空间内的类型对应用程序来说是本地的。 或者,如果类型位于不同的程序集中,程序集名称也应该在名称空间声明中定义,如下面的XAML代码示例所示:
然后在从导入的名称空间声明类型的实例时指定名称空间前缀,如下面的XAML代码示例所示:
概观
有两个XAML名称空间声明总是在XAML文件的根元素中。 第一个定义了默认的命名空间,如下面的XAML代码示例所示:
点击(此处)折叠或打开
- xmlns="http://xamarin.com/schemas/2014/forms"
第二个名称空间声明使用x前缀,如下面的XAML代码示例所示:
点击(此处)折叠或打开
- xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
下表列出了Xamarin.Forms支持的x名称空间属性:
构造 | 描述 |
x:Arguments | 指定非默认构造函数或工厂方法对象声明的构造函数参数。 |
x:Class | 指定在XAML中定义的类的名称空间和类名。 类名称必须与代码隐藏文件的类名相匹配。 请注意,此构造只能出现在XAML文件的根元素中。 |
x:FactoryMethod | 指定可用于初始化对象的工厂方法。 |
x:Key | 为ResourceDictionary中的每个资源指定唯一的用户定义键。 该键的值用于检索XAML资源,通常用作StaticResource标记扩展的参数。 |
x:Name | 指定XAML元素的运行时对象名称。 设置x:Name与在代码中声明变量类似。 |
x:TypeArguments | 指定泛型类型的构造函数的泛型类型参数。 |
有关x:参数,x:FactoryMethod和x:TypeArguments属性的更多信息,请参阅在XAML中传递参数。
在XAML中,名称空间声明从父元素继承到子元素。 因此,在XAML文件的根元素中定义名称空间时,该文件中的所有元素都将继承该名称空间声明。
为类型声明命名空间
XAML中可以引用类型,方法是声明带有前缀的XAML名称空间,命名空间声明指定公共语言运行时(CLR)名称空间名称,也可以使用程序集名称。 这是通过在命名空间声明中为以下关键字定义值来实现的:
- clr-namespace: 或者 using: – 包含要作为XAML元素公开的类型的程序集中声明的CLR名称空间。 此关键字是必需的。
- assembly= – 包含引用的CLR名称空间的程序集。 该值是程序集的名称,不带文件扩展名。 程序集的路径应该在包含将引用程序集的XAML文件的项目文件中建立。 如果clr-namespace值与引用类型的应用程序代码位于相同的程序集中,则可以省略此关键字。
请注意,分隔clr-名称空间或从其值中使用标记的字符是冒号,而将汇编标记与其值相分离的字符是等号。 两个令牌之间使用的字符是分号。
下面的代码示例显示了一个XAML名称空间声明:
点击(此处)折叠或打开
- ContentPage ... xmlns:local="clr-namespace:HelloWorld" ...>
- ...
- /ContentPage>
点击(此处)折叠或打开
- ContentPage ... xmlns:behaviors="clr-namespace:Behaviors;assembly=BehaviorsLibrary" ...>
- ...
- /ContentPage>
点击(此处)折叠或打开
- ContentPage ... xmlns:behaviors="clr-namespace:Behaviors;assembly=BehaviorsLibrary" ...>
- ...
- /ContentPage>
点击(此处)折叠或打开
- ListView ...>
- ListView.Behaviors>
- behaviors:EventToCommandBehavior EventName="ItemSelected" ... />
- /ListView.Behaviors>
- /ListView>
概要
本文介绍了XAML命名空间语法,并演示了如何声明一个XAML命名空间以访问一个类型。 XAML为名称空间声明使用xmlns XML属性,并且可以通过声明带有前缀的XAML名称空间来在XAML中引用类型。