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

VS2010 Custom MarkupExtension

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

У нас есть собственный MarkupExtension, и мы используем его в xaml для получения определенных ресурсов. Что-то вроде этого:

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

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

Сообщение об ошибке от конструктора:

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

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

4b9b3361

Ответ 1

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

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

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

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