WPF: Habilitar la depuración de XAML

Uno de los problemas más habituales a la hora de depurar una aplicación WPF, es el de cometer errores dentro del XAML que define nuestra interfaz. Por defecto las excepciones nos muestran un mensaje que de poco ayuda:

Error in markup file ‘Namespace;component/WMain.xaml’ Line 1 Position 9.

Si nos paramos a pensar unos segundos en la estructura de las ventanas en XAML, rápidamente nos daremos cuenta que en la primera línea, en la posición 9, está parte de la definición de nuestra ventana, y rara vez es la causante del problema.

Por defecto, Visual Studio no muestra los detalles de las excepciones que son provocadas por un error en el XAML, pero esto lo podemos cambiar siguiendo estos sencillos pasos:

  1. Pulsamos sobre el menú Debug (Depuración)
  2. Seleccionamos Exceptions… (Excepciones) Ctrl+Alt+G
  3. En la ventana que se nos muestra pulsamos el botón Add… (Añadir)
  4. Seleccionamos en el campo Type: Common Language Runtime Exceptions
  5. Escribimos en el campo Name: System.Windows.Markup.XamlParseException
  6. Desplegamos el árbol de Common Language Runtime Exceptions y marcamos la casilla de Thrown

excepciones

Acto seguido volveremos a depurar la aplicación, lo que, una vez se dispare la excepción, nos mostrará un mensaje como el que sigue:

Cannot convert the value in attribute ‘Background’ to object of type ‘System.Windows.Media.Brush’. Token is not valid.  Error at object ‘System.Windows.Controls.Grid’ in markup file ‘Namespace;component/WMain.xaml’ Line 10 Position 6.

El grupo de producto está trabajando en la mejora de este aspecto en la versión 2008 de Visual Studio (Antes conocida como Orcas).

Espero que este pequeño truco os resulte de utilidad y os  ayude a solucionar algún que otro problema.

9 comentarios en “WPF: Habilitar la depuración de XAML”

  1. Gracias, la verdad es que buscar un error en el XAML sin ayuda, en archivos con muchas líneas, se hacía realmente difícil.
    Un saludete a los dos y gracias por vuestros comentarios.

  2. Sin más detalles, la verdad es que no se porqué no te funciona.
    Comprueba que la casilla de la columna Thrown esté marcada y que has ejecutado VS con derechos de Administrador.
    Un saludo

  3. Hola Cristian.

    Muchas gracias por tu artículo.

    Quería comentarte que en un equipo sí me ha funcionado, pero ahora estoy en otro, he hecho lo que comentabas pero aún así no me detecta el error, sigue dándome el error que has comentado, línea 1 posición 9.

    Cuando he añadido esta excepción he marcado las 2 casillas. ¿Debo dejar alguna sin marcar La otra vez marqué las 2 y me mostró bien el error.

    ¿Alguna idea?

    Muchas gracias.

  4. mira, yo estoy trabajando con un componente xaml, es una forma simple, que tienes varios CheckBox, un ListBox, otros radioButtoms, etc. bastante simple , al ejecutar me sale la excepcio System.Wyndows.Makup.Xaml….
    pero no logro corregir el problema, dice especificamete
    AG_E_parser_bad_property_value

    ayudenme por favor

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *