【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中引用类型。

目录
相关文章
|
8月前
|
XML 开发框架 .NET
|
C# 前端开发
WPF中Style文件的引用——使用xaml代码或者C#代码动态加载
原文:WPF中Style文件的引用——使用xaml代码或者C#代码动态加载   WPF中控件拥有很多依赖属性(Dependency Property),我们可以通过编写自定义Style文件来控制控件的外观和行为,如同CSS代码一般。
4798 0
|
C#
艾伟_转载:WPF/Silverlight陷阱:XAML自定义控件的嵌套内容无法通过名称访问
为了说明这个问题,假定我们需要实现一个具有特殊功能的按钮控件。编写Xaml文件如下: Button> 对 Code Behind类,唯一的改动是把向导生成的基类从UserControl改成Button: public partial class XamlButton : Button{    ...
1091 0
|
C#
WPF加载程序集中字符串资源
原文:WPF加载程序集中字符串资源   WPF资源 WPF资源使用其实的也是resources格式嵌入资源,默认的资源名称为"应用程序名.g.resources",不过WPF资源使用的pack URI来访问资源。
1022 0
|
C#
WPF中,怎样将XAML代码加载为相应的对象?
原文:WPF中,怎样将XAML代码加载为相应的对象? 在前面“在WPF中,如何得到任何Object对象的XAML代码?”一文中,我介绍了使用System.Windows.Markup.XamlWriter.Save(objName)得到任何Object对象的XAML代码。
946 0
|
C#
WPF xaml中列表依赖属性的定义
原文:WPF xaml中列表依赖属性的定义 列表内容属性 如上图,是一个列表标题排序控件,我们需要定义一个标题列表,从而让调用方可以自由的设置标题信息。 在自定义控件时,会遇到列表依赖属性,那么该如何定义呢? 下面是错误的定义方式: 1 /// 2 /// 标识 的依赖项属性。
1114 0
|
C# Windows
在WPF中,如何得到任何Object对象的XAML代码?
原文:在WPF中,如何得到任何Object对象的XAML代码? 在WPF中,可以使用System.Windows.Markup.XamlWriter.Save(objName)得到任何Object对象的XAML代码。
826 0
|
C# Windows .NET
XAML的命名空间
原文:XAML的命名空间 一个最简单的XAML例子   xmlns特征的语法格式如下:xmlns[:可选的映射前缀]="名称空间" xmlns后可以跟一个可选的映射前缀,之间用冒号分隔,如果没有写可选映射前缀,就意味着所有来自这个名称空间的标签都不用加前缀,这个没有映射前缀的名称空间称为“默认名称空间”,默认名称空间只能有一个。
654 0
|
C#
WPF整理-XAML访问静态属性
原文:WPF整理-XAML访问静态属性 "XAML provides an easy way to set values of properties—type converters and the extended property syntax allow for flexible setting of values.
977 0
|
C# Windows .NET
XAML的命名空间 - CSDN博客
原文:XAML的命名空间 - CSDN博客 一个最简单的XAML例子   [html] view plain copy print?                                ...
594 0