Как заставить XmlnsDefinition работать с локальной сборкой?
Я начал использовать атрибут XmlnsDefinition, чтобы связать некоторые пространства имен CLR с одним xmlns для удобства XAML.
К сожалению, похоже, что это работает только при использовании иностранных сборок. Если у меня есть XAML файл в той же сборке, что и типы, которые находятся в пространстве имен, я ссылаюсь на XmlnsDefinition, тогда компилятор дает ошибку о типе, который не существует в xmlns, который я определяю.
Перемещение типа в чужую сборку устраняет проблему.
Есть ли способ использовать XmlnsDefinition на сборке и использовать его из этой сборки через XAML?
Ответы
Ответ 1
К сожалению, нет. Файл XAML должен быть проанализирован до сборки, чтобы генерировать код, подразумеваемый XAML для включения в сборку. Компилятор XAML создает код за файлами (файлы, заканчивающиеся, например,.g.cs), и этот файл становится частью сборки, в которую содержится файл XAML. Поскольку сборка еще не построена, компилятор XAML не может загрузить его, чтобы определить атрибуты XmlnsDeclaration.
Ответ 2
Используйте clr-namespace
вместо этого. Например:
xmlns:controls="clr-namespace:Rhapsody.UI.Main.Controls