В моем проекте есть сборка, которая определяет набор элементов управления WPF. Я хочу иметь возможность использовать их без явной ссылки на сборку в коде XAML. Вот почему я использую пользовательское XmlnsDefinition:
[assembly: XmlnsDefinition( "http://schemas.microsoft.com/winfx/2006/xaml/presentation", "MyProject.Common.WpfLibrary.Markup")] [assembly: XmlnsDefinition( "http://schemas.microsoft.com/winfx/2007/xaml/presentation", "MyProject.Common.WpfLibrary.Markup")] [assembly: XmlnsDefinition( "http://schemas.microsoft.com/winfx/2008/xaml/presentation", "MyProject.Common.WpfLibrary.Markup")]
Это работает как шарм в VS2008. Я могу напрямую использовать элементы управления, определенные в пространстве имен разметки. Однако Blend, похоже, это не нравится, и я выдаю ошибку «Invalid XAML» везде, где я пытаюсь использовать элемент управления.
У вас есть обходной путь?
XmlnsDefinitionAttribute следует использовать только один раз для каждого пространства имен CLR в сборке. Используйте XmlnsCompatibleWithAttribute для 2-го и 3-го назначения.