VS2010 Custom MarkupExtension - PullRequest
       22

VS2010 Custom MarkupExtension

26 голосов
/ 29 апреля 2010

Мы только что перешли на vs2010 с vs2008, и наши проекты без проблем компилируются и работают.Однако в конструкторе xaml есть некоторые ошибки.Вот одна из ошибок, надеюсь, что кто-то может предложить решение.

У нас есть пользовательское MarkupExtension, и мы используем его в xaml для получения определенных ресурсов.Примерно так:

<Button Style="{l:GetResource Key=MyButtonStyle}" />

Я знаю, что мы можем использовать StaticResource или DynamicResource.Однако у нас есть причины использовать пользовательское markupextension.

Сообщение об ошибке от дизайнера:

«GetResourceExtension» недопустимо для Setter.Value.Единственными поддерживаемыми типами MarkupExtension являются DynamicResourceExtension и BindingBase или производные типы.

Мой вопрос заключается в том, что код отлично работает в vs2008, а также отлично работает в 2010 году, как создать дизайнер 2010работать?

1 Ответ

1 голос
/ 19 февраля 2013

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

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

В моем случае я писал механизм связывания, и поскольку объект был нулевым, пока во время выполнения мне не пришлось использовать new Object (); и обменять его во время выполнения. Это хакерство, но ошибка компиляции сводила меня с ума.

Парсер xaml кажется лучше в 2012 году, но даже тогда есть странные ошибки.

...