¿Cómo implementar validaciones de tiempo de diseño para XAML, que resultan en errores de compilación?

StackOverflow https://stackoverflow.com/questions/335645

Pregunta

Cómo hacer cumplir que los desarrolladores que escriben XAML en Visual Studio deben seguir ciertos estándares y se deben ejecutar validaciones y si se arrojan errores de tiempo de compilación no válidos.

Por ejemplo, asegurándose de que todas las expresiones de enlace de datos (algunas son realmente largas) se escriben correctamente según 'una validación personalizada' que me gustaría implementar, durante el tiempo de diseño. Me gusta,

<TextBox Text="{Binding Source={StaticResource CALCULATED}, Converter={StaticResource XPathConverter}, ConverterParameter=@FIRSTNAME_STRING, XPath=@FIRSTNAME}"/>

En el ejemplo anterior, si la expresión de enlace en la propiedad Text no está en ese formato , debería haber un error de compilación .

¿Hay alguna manera de hacer esto?

¿Fue útil?

Solución

Lo sentimos, el servicio de lenguaje XAML tampoco se puede extender de esta manera. La mejor manera de hacer esto hoy es crear una tarea de compilación. Creo que puede conectarlo al objetivo MarkupCompilePass1DependsOn y se invocará automáticamente cuando el usuario guarde o cambie un archivo XAML. Todavía tiene que escanear el archivo de forma redundante, pero no tiene que esperar a una compilación real para que esto funcione. Esta es una cita directa de uno de los arquitectos de Microsoft que actualmente trabaja en los diseñadores de WPF.

Otros consejos

No hay una forma integrada de hacer esto. La mejor manera de obtener este resultado es ejecutar una herramienta personalizada en la entrada. Esto requerirá mucho trabajo de pierna de su parte porque implicará analizar el archivo usted mismo, pero debería poder hacer que este escenario funcione.

Sitio de ejemplo para crear un generador personalizado

http://www.drewnoakes.com/snippets/WritingACustomCodeGeneratorToolForVisualStudio/ p>

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top