【问题标题】:WPF - Defining a xmlns based on another xmlnsWPF - 基于另一个 xmlns 定义一个 xmlns
【发布时间】:2019-07-15 14:38:07
【问题描述】:

有没有办法像这样声明一个命名空间:

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

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

【问题讨论】:

  • 有趣的问题,我现在想知道!
  • 混淆一些简单的东西可能会带来比修复它们更多的问题。

标签: xml wpf namespaces hierarchy


【解决方案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/"

【讨论】:

【解决方案2】:

我见过人们使用 XML 实体来做这类事情

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

虽然它完全合法,但如果我发现在我想使用的 XML 中发生这种情况,我会感到非常震惊。主要是因为它暗示命名空间可能会在某个时候发生变化,并且在命名空间可能发生变化时编写应用程序来处理 XML 只会让事情变得更加困难。

【讨论】:

  • 好的,我看看这是否有帮助;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多