Silverlight XAML 命名空间以及将 XAML 命名空间映射为前缀

简介:



http://msdn.microsoft.com/zh-cn/library/cc189061%28v=vs.95%29.aspx

在大多数 Silverlight XAML 文件的根元素中都可以找到两个 XML 命名空间 (xmlns) 映射,本主题进一步说明它们的存在和用途。同时还介绍如何生成类似的映射,以便使用在您自己的代码中和/或单独的程序集(例如在 Silverlight SDK 中作为客户端库分发的程序集)中定义的元素。

本主题包括下列各节。

030c41d9079671d09a62d8e2c1db6973.gifSilverlight 和 XAML 语言 XAML 命名空间声明

在很多 XAML 文件的根元素中都存在两个 xmlns 声明。第一个声明将 Silverlight 核心 XAML 命名空间映射为默认命名空间:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

请注意,这是与 WPF 所使用的默认命名空间相同的 XAML 命名空间。

第二个声明为 XAML 定义的语言元素映射一个单独的 XAML 命名空间,通常将它映射为 x: 前缀:

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

此 xmlns 值还与 WPF 使用的 xmlns 值相同。

这些声明之间的关系是:XAML 是语言定义,而 Silverlight 是将 XAML 用作语言并定义在 XAML 中引用其类型所用特定词汇的一个实现。特别要指出的是,Silverlight 使用 XAML 语言元素的一个严格子集。XAML 语言指定特定语言元素,每个元素都应能通过针对 XAML 命名空间执行的 XAML 处理器实现进行访问。Silverlight 还使用 WPF 中实现的 XAML 语言元素集的子集。

项目模板、代码示例以及此文档集中的语言功能文档都遵从 XAML 语言 XAML 命名空间的 x: 映射约定。此 XAML 命名空间定义几个常用功能,即便对于基本的基于 Silverlight 的应用程序,这些功能也是必需的。例如,若要通过分部类将全部代码隐藏加入 XAML 文件,必须将该类指定为相关 XAML 文件的根元素中的 x:Class 属性。或者,在 XAML 页中定义的、您希望作为 ResourceDictionary 中的键控资源访问的任何元素都必须对相关对象元素设置了 x:Key 属性。

030c41d9079671d09a62d8e2c1db6973.gif将前缀映射到 CLR 命名空间和程序集

您可以使用 xmlns 前缀声明中的一系列标记将 XAML 命名空间映射到程序集以及该程序集内的 CLR 命名空间,这种映射方式类似于将 XAML 命名空间值映射到 x: 前缀所采用的方式,不同的是本映射方式显式声明程序集和 CLR 命名空间而不是指定 URI。

语法使用下列可能的命名标记和值:

clr-namespace: 在包含要对 XAML 用法公开的公共类型的程序集中声明的公共语言运行时 (CLR) 命名空间。

assembly= 是指包含部分或全部引用的 CLR 命名空间的程序集。

请注意,分隔 clr-namespace 标记和其值的字符是冒号 (:),而分隔 assembly 标记和其值的字符是等号 (=)。这两个标记之间使用的字符是分号。不要在映射值中的任意位置包括空格。例如:

xmlns:custom="clr-namespace:SDKSample;assembly=SDKSampleLibrary"

映射到 SDK 客户端库程序集

SDK 客户端库程序集使用某一共享的 XAML 命名空间,该命名空间具有以下标识符:http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk。通常,此 XAML 命名空间映射到前缀 sdk。有关更多信息,请参见 Silverlight 库的前缀和映射

注意 说明:

要使用来自 SDK 客户端库的类,仅映射前缀还不够。还必须将 SDK 客户端库程序集作为应用程序结构和部署设置的一部分进行分发或引用。有关更多信息,请参见应用程序结构

映射到自定义程序集

对于您所创建然后作为基于 Silverlight 的应用程序的一部分进行分发的任何自定义程序集,可以映射前缀来引用这种自定义程序集中包含的类型。此同一过程还可以适用于您的应用程序可以分发的任何第三方程序集,例如提供第三方控件的库。

例如,若要映射 custom1 前缀(该前缀使您能引用在名为 Custom 的程序集中定义的 CustomClasses 命名空间),并将来自该命名空间/程序集的类用作 XAML 中的对象元素,则您的 XAML 页应对根元素包含以下映射:

xmlns:custom1="clr-namespace:CustomClasses;assembly=Custom"

注意 说明:

访问基于源站点的程序集所需的路径不应包含在映射中。指向程序集的路径仅与 AssemblyPart.Source 值和 ExtensionPart.Source 值有关。

当您在 XAML 中定义新 xmlns 值时,Visual Studio XAML 编辑功能将显示一个有助于简化映射过程的下拉项。为了达到最佳效果,请先从项目引用相关程序集,再从该程序集映射前缀。

映射到当前程序集

如果引用的 clr-namespace 与引用自定义类的应用程序代码是在同一程序集(通常为 EntryPointAssembly)中定义的,则可以省略 assembly。这种因为映射同一程序集而完全省略程序集信息的等效语法是指定 assembly=,等号后不需要任何字符串标记。

不需要映射分部类;如果您希望在 XAML 中将自定义类作为元素引用,只需要映射应用程序中页的非分部类。















本文转自cnn23711151CTO博客,原文链接:http://blog.51cto.com/cnn237111/624441 ,如需转载请自行联系原作者

相关文章
|
C#
艾伟_转载:WPF/Silverlight陷阱:XAML自定义控件的嵌套内容无法通过名称访问
为了说明这个问题,假定我们需要实现一个具有特殊功能的按钮控件。编写Xaml文件如下: Button> 对 Code Behind类,唯一的改动是把向导生成的基类从UserControl改成Button: public partial class XamlButton : Button{    ...
1048 0
|
数据可视化 .NET 开发工具

热门文章

最新文章