Подтвердить что ты не робот

Как заставить XmlnsDefinition работать с локальной сборкой?

Я начал использовать атрибут XmlnsDefinition, чтобы связать некоторые пространства имен CLR с одним xmlns для удобства XAML.

К сожалению, похоже, что это работает только при использовании иностранных сборок. Если у меня есть XAML файл в той же сборке, что и типы, которые находятся в пространстве имен, я ссылаюсь на XmlnsDefinition, тогда компилятор дает ошибку о типе, который не существует в xmlns, который я определяю.

Перемещение типа в чужую сборку устраняет проблему.

Есть ли способ использовать XmlnsDefinition на сборке и использовать его из этой сборки через XAML?

4b9b3361

Ответ 1

К сожалению, нет. Файл XAML должен быть проанализирован до сборки, чтобы генерировать код, подразумеваемый XAML для включения в сборку. Компилятор XAML создает код за файлами (файлы, заканчивающиеся, например,.g.cs), и этот файл становится частью сборки, в которую содержится файл XAML. Поскольку сборка еще не построена, компилятор XAML не может загрузить его, чтобы определить атрибуты XmlnsDeclaration.

Ответ 2

Используйте clr-namespace вместо этого. Например:

xmlns:controls="clr-namespace:Rhapsody.UI.Main.Controls