【Xamarin.Forms】XAML命名空间——将XAML名称空间声明为引用类型

简介: XAML使用xmlns XML属性来进行名称空间声明。 本文将介绍XAML命名空间语法,并演示如何声明XAML命名空间以访问类型。 概观 有两个XAML名称空间声明总是在XAML文件的根元素中。
XAML使用xmlns XML属性来进行名称空间声明。 本文将介绍XAML命名空间语法,并演示如何声明XAML命名空间以访问类型。

概观

有两个XAML名称空间声明总是在XAML文件的根元素中。 第一个定义了默认的命名空间,如下面的XAML代码示例所示:

点击(此处)折叠或打开

  1. xmlns="http://xamarin.com/schemas/2014/forms"
默认名称空间指定在XAML文件中定义的,没有前缀的元素引用Xamarin.Forms类,如ContentPage。
第二个名称空间声明使用x前缀,如下面的XAML代码示例所示:

点击(此处)折叠或打开

  1. xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
XAML使用前缀声明非默认名称空间,在引用名称空间内的类型时使用前缀。 x命名空间声明指定在XAML中使用前缀x定义的元素用于XAML固有的元素和属性(特别是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名称空间声明:

点击(此处)折叠或打开

  1. ContentPage ... xmlns:local="clr-namespace:HelloWorld" ...>
  2.   ...
  3. /ContentPage>
或者,这可以写成:

点击(此处)折叠或打开

  1. ContentPage ... xmlns:behaviors="clr-namespace:Behaviors;assembly=BehaviorsLibrary" ...>
  2.   ...
  3. /ContentPage>
本地前缀是用来表示名称空间内的类型对应用程序来说是本地的。 或者,如果类型位于不同的程序集中,程序集名称也应该在名称空间声明中定义,如下面的XAML代码示例所示:

点击(此处)折叠或打开

  1. ContentPage ... xmlns:behaviors="clr-namespace:Behaviors;assembly=BehaviorsLibrary" ...>
  2.   ...
  3. /ContentPage>
然后在从导入的名称空间声明类型的实例时指定名称空间前缀,如下面的XAML代码示例所示:

点击(此处)折叠或打开

  1. ListView ...>
  2.   ListView.Behaviors>
  3.     behaviors:EventToCommandBehavior EventName="ItemSelected" ... />
  4.   /ListView.Behaviors>
  5. /ListView>


概要

本文介绍了XAML命名空间语法,并演示了如何声明一个XAML命名空间以访问一个类型。 XAML为名称空间声明使用xmlns XML属性,并且可以通过声明带有前缀的XAML名称空间来在XAML中引用类型。

目录
相关文章
|
C# 前端开发
WPF中Style文件的引用——使用xaml代码或者C#代码动态加载
原文:WPF中Style文件的引用——使用xaml代码或者C#代码动态加载   WPF中控件拥有很多依赖属性(Dependency Property),我们可以通过编写自定义Style文件来控制控件的外观和行为,如同CSS代码一般。
4745 0
|
存储 开发框架 缓存
【深入理解CLR 四】共享程序集和强命名程序集
【深入理解CLR 四】共享程序集和强命名程序集
93 0
|
IDE 编译器 C#
C#中的命名空间和程序集
C#中的命名空间和程序集
229 0
|
C# 开发者 API
让你编写的控件库在 XAML 中有一个统一的漂亮的命名空间(xmlns)和命名空间前缀
原文 让你编写的控件库在 XAML 中有一个统一的漂亮的命名空间(xmlns)和命名空间前缀 在 WPF XAML 中使用自己定义的控件时,想必大家都能在 XAML 中编写出这个控件的命名空间了。然而——我写不出来,除非借助 ReSharper。
1205 0
|
C#
WPF加载程序集中字符串资源
原文:WPF加载程序集中字符串资源   WPF资源 WPF资源使用其实的也是resources格式嵌入资源,默认的资源名称为"应用程序名.g.resources",不过WPF资源使用的pack URI来访问资源。
1008 0
|
C#
WPF中,怎样将XAML代码加载为相应的对象?
原文:WPF中,怎样将XAML代码加载为相应的对象? 在前面“在WPF中,如何得到任何Object对象的XAML代码?”一文中,我介绍了使用System.Windows.Markup.XamlWriter.Save(objName)得到任何Object对象的XAML代码。
922 0
|
XML C# 数据格式
XAML属性赋值转换之谜(WPF XAML语法解密)
原文:XAML属性赋值转换之谜(WPF XAML语法解密) XAML与XML类似,就是XML延伸过来的。为了更好的表达一些功能,WPF对XML做了扩展,有些功能是WPF在后台悄悄的替你做了。有时候,虽然实现了某个功能,但是对实现原理还是很茫然。
956 0
|
C#
WPF xaml中列表依赖属性的定义
原文:WPF xaml中列表依赖属性的定义 列表内容属性 如上图,是一个列表标题排序控件,我们需要定义一个标题列表,从而让调用方可以自由的设置标题信息。 在自定义控件时,会遇到列表依赖属性,那么该如何定义呢? 下面是错误的定义方式: 1 /// 2 /// 标识 的依赖项属性。
1102 0
|
C# Windows
在WPF中,如何得到任何Object对象的XAML代码?
原文:在WPF中,如何得到任何Object对象的XAML代码? 在WPF中,可以使用System.Windows.Markup.XamlWriter.Save(objName)得到任何Object对象的XAML代码。
814 0
|
C# Windows .NET
XAML的命名空间
原文:XAML的命名空间 一个最简单的XAML例子   xmlns特征的语法格式如下:xmlns[:可选的映射前缀]="名称空间" xmlns后可以跟一个可选的映射前缀,之间用冒号分隔,如果没有写可选映射前缀,就意味着所有来自这个名称空间的标签都不用加前缀,这个没有映射前缀的名称空间称为“默认名称空间”,默认名称空间只能有一个。
648 0