2

У меня есть пользовательский элемент управления CustomControl с настраиваемым вложенным свойством «CustomAttachedProperty», определенным в нем. Управление работает правильно, folowing XAML делает, как это предполагают, чтобы быть:Windows 8, XamlReader не может загрузить xaml с настраиваемыми вложенными свойствами

<ns:CustomControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:ns="using:MyNamespace"> 
    <TextBlock ns:CustomControl.CustomAttachedProperty="0" Text="This element causes Parse Error" /> 
</ns:CustomControl> 

Проблема начинается тогда, когда я пытаюсь загрузить тот же XAML через XamlReader.Load(). Корень проблемы прилагается свойство. Без прикрепленного свойства XamlReader может правильно загрузить строку.

XamlReader.Load, вызываемый в той же сборке, где определен CustomControl.

У кого-нибудь есть идеи, что не так?

ответ

1

Я не могу дать полный ответ, но проблема связана с новой платформой xaml и тем, как она обрабатывает отражение и метаданные. В основном потому, что платформа xaml является родной под крышками, у нее нет доступа к отражению для правильного анализа xaml.

Как это решить, с IXamlMetadataProvider, который, честно говоря, является болью в заднице для реализации. Часть обычного процесса сборки создает один для вашего приложения, но он плохо работает с читателем xaml и вашей библиотекой. Вам в конечном итоге нужно реализовать его самостоятельно. Вы можете использовать приложение для своего приложения в папке obj/Debug в XamlTypeInfo.g.cs.

Мое решение состояло в том, чтобы создать небольшой проект, в котором xaml, который я собирался проанализировать в App.xaml.cs, позволяет компилятору собрать вышеуказанный файл, а затем вырезать его для создания моего собственного.

Если вы посмотрите на это commit to Caliburn Micro, вы увидите, что у меня получилось.

+0

Большое спасибо, Найджел, я проверил предложенный код, чтобы узнать, может ли он быть полезным для меня. – Andris

Смежные вопросы