WPF-基于另一个xmlns定义一个xmlns

时间:2019-02-21 15:55:28

标签: xml wpf namespaces hierarchy

有没有办法声明这样的命名空间:

xmlns:views="clr-namespace:xxx.xxx.Views"
xmlns:someNestedViews="views.SomeNestedView"

目标是加快嵌套/重复的xmlns声明的速度,并使它们更易于阅读/维护。

2 个答案:

答案 0 :(得分:1)

否,您需要包括整个CLR名称空间:xmlns:someNestedViews="xxx.xxx.Views.SomeNestedView"clr-namespace:语法将XAML命名空间映射到CLR命名空间。它不会映射到另一个XML名称空间。

如果您是Views命名空间中的类的作者,则可以使用XmlnsDefinitionAttribute指定XAML命名空间和几个不同的CLR命名空间之间的映射,例如:

[assembly: XmlnsDefinition("http://yourlibrary.com/", "xxx.xxx.Views.")]
[assembly: XmlnsDefinition("http://yourlibrary.com/", "xxx.xxx.Views.SomeNestedView")]

这减轻了XAML的负担:

xmlns:viewsAndNestedViews="http://yourlibrary.com/"

答案 1 :(得分:0)

我已经看到人们将XML实体用于此类事情

xmlns:x="&stem;/some.uri"

但是,尽管这完全是合法的,但是如果发现要使用的XML发生这种情况,我会感到非常震惊。主要是因为它暗示了名称空间可能会在某个时刻发生更改,并且在名称空间可能发生更改时编写应用程序以处理XML只会使事情变得更加困难。