2010-04-28 11 views
25

Acabamos de cambiar a vs2010 desde vs2008, y nuestros proyectos se compilan y funcionan bien sin ningún problema. Sin embargo, el diseñador xaml tiene algunos errores. Aquí está uno de los errores, espero que alguien pueda brindar una solución.VS2010 Custom MarkupExtension

Tenemos un MarkupExtension personalizado, y lo usamos en xaml para obtener ciertos recursos. Algo como esto:

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

sé que podemos utilizar StaticResource o DynamicResource. Sin embargo, tenemos nuestros motivos para usar la extensión de marca personalizada.

El mensaje de error del diseñador es:

'GetResourceExtension' no es válido para Setter.Value. Los únicos tipos compatibles con MarkupExtension son DynamicResourceExtension y BindingBase o tipos derivados.

Mi pregunta es que el código funciona bien en vs2008, y también funciona bien en 2010, ¿cómo hacer que el diseñador de 2010 funcione?

+1

¿Has probado esto en Blend? Me pregunto si Cyder (el Diseñador VSAM120 XAML) simplemente no puede tratar con las Extensiones de marcado personalizadas. No me sorprendería, ya que es bastante sensible, aunque este es básico. ¿Este error bloquea el diseñador o funciona y simplemente se muestra como un error? –

Respuesta

1

He escrito algunas extensiones de marcado y, aunque el código se ejecuta, obtengo el error de Xaml como el que se obtiene todo el tiempo. Suponiendo que tiene un código válido, encontré que la única forma de deshacerse de los errores era mediante la opción de reconstrucción y luego ejecutando la aplicación.

Por supuesto, el problema es que si lo cambia nuevamente o lo mueve, los errores parecen volver. Mi suposición es que la compilación estática no puede resolver completamente lo que esté haciendo su marcado y arroja el error en función de esto.

En mi caso estaba escribiendo una carpeta de métodos y como el objeto era nulo hasta el tiempo de ejecución, terminé teniendo que usar Object() nuevo; y cambiarlo en tiempo de ejecución. Es raro, pero el error de compilación me estaba volviendo loco.

El analizador xaml parece ser mejor en 2012, pero incluso entonces hay algunos errores.