WPF - определение xmlns на основе другого xmlns - PullRequest
0 голосов
/ 21 февраля 2019

Есть ли способ объявить пространство имен следующим образом:

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

Цель состоит в том, чтобы ускорить вложенные / повторные объявления xmlns и сделать их проще для чтения / обслуживания.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Я видел, как люди используют сущности XML для такого рода вещей

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

, но, хотя это совершенно законно, я был бы весьма потрясен, если бы обнаружил, что в XML происходит то, с чем я хотел работать.Главным образом потому, что он намекает на то, что пространство имен может измениться в какой-то момент, а написание приложения для обработки XML, когда пространства имен могут измениться, только усложнит ситуацию.

0 голосов
/ 21 февраля 2019

Нет, вам нужно включить все пространство имен 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/"
...