6

在阅读了 MSDN-XAML NamespacesMSDN-Understanding XAML Namespaces之后,我仍然不明白拥有Qualified Name (QName)的目的。

以下面的命名空间声明为例:

xmlns:x='http://www.w3.org/1999/XSL/Transform'

x是完整 URI(在本例中为 URL)的前缀缩写:http://www.w3.org/1999/XSL/Transform. 然后就是这个 QName,叫做xmlns. mdsn 中 QName 的定义是:

这个包含前缀的完整名称是限定名称 (QName) 的词汇形式:

那应该是什么意思,为什么它在那里,因为 t 语句已经有一个定位器和一个前缀来标识要使用的命名空间及其名称?

4

1 回答 1

1

我认为这不仅仅是一个 XAML 问题,它只是一个 XML 命名空间问题。

xmlns 属性(一个特殊的属性)只是在 XML 中用来定义命名空间的属性。它说“这里有一个命名空间声明”。如果您不添加前缀,那么您是在告诉它将作为属性值的名称空间设置为页面的默认名称空间。如果您完全省略默认命名空间,则假定它是属性的值(在 = 之后和引号之间)。

XAML 是 XML,并选择使用 XML 机制来声明命名空间。我猜他们可能已经创建了自己的机制来执行此操作,但是由于他们没有,如果您按照问题中的提示添加了命名空间,而没有 xmlns:,则应用程序处理 XML(在这种情况下为 .NET 框架,解析 XAML 文件)不会知道您正在尝试定义命名空间;它会认为您正在向定义它的元素添加一个名为“x”的属性(这很可能不是为该元素定义的属性)。

有关 XML 命名空间的更多信息

http://www.w3.org/TR/REC-xml/

http://www.w3schools.com/XML/xml_namespaces.asp

http://en.wikipedia.org/wiki/XML_namespace

于 2012-06-13T16:36:03.983 回答