Diagnósticos de enlace de datos XAML

Los desarrolladores que trabajan en proyectos XAML suelen tener que detectar y resolver errores de enlace de datos XAML en sus aplicaciones. Ahora hay herramientas en Visual Studio 2019 versión 16.8 o posterior y Visual Studio 2022 para ayudar a encontrar estos molestos errores de enlace de datos mientras depura la aplicación. Los ejemplos de errores comunes de enlace son los siguientes:

  • Enlace a un nombre de propiedad que no existe: {Binding Wrong.Name}
  • Enlace a un valor del tipo incorrecto, como el enlace a un valor booleano cuando se requiere una enumeración: Visibility="{Binding IsVisible}"

Dado que estos enlaces se calculan en tiempo de ejecución mediante la reflexión, el editor XAML no siempre es puede capturarlos y la compilación seguirá siendo correcta. El error solo se produce en tiempo de ejecución.

El enlace de datos XAML se explica en estos artículos:

Los errores de enlace siempre se han escrito en la ventana de salida de depuración en Visual Studio. Pero es fácil perder los errores de enlace dentro de la salida de depuración, ya que contiene otra información de depuración que desplaza dichos errores fuera de la vista. Este es un ejemplo de un error de enlace de WPF dentro de la ventana de salida de depuración:

Screenshot of the output window containing a binding failure.

El error de enlace puede estar a cientos de líneas de la parte superior de la ventana y el texto no le indica exactamente qué enlace tuvo el error, por lo que debe pensar en ello y buscarlo.

Ahora, con la ventana de herramientas Errores de enlaces XAML, puede ver claramente qué enlaces tuvieron el error, junto con los datos pertinentes para cada error, como la ubicación del archivo dentro de XAML. Además, hay muchas características útiles para investigar los errores mediante la búsqueda, la ordenación e incluso la apertura del editor XAML con el foco establecido en el enlace con errores.

Screenshot of the XAML Binding Failures tool window.

Al hacer doble clic en esas filas, se abre el código XAML de origen para el enlace, como se muestra en la siguiente imagen:

Screenshot of example bindings in the XAML editor.

Ventana de herramientas Errores de enlaces XAML

La ventana de herramientas Errores de enlaces XAML está disponible durante la depuración. Para abrirla, vaya a Depurar>Ventanas>Errores de enlaces XAML.

Screenshot of the XAML Binding Failures option in the Debug menu.

O bien, seleccione el botón Errores de enlace en la barra de herramientas de la aplicación. El número situado junto al icono muestra cuántos errores de enlace se muestran en la ventana de herramientas.

Screenshot of the in-app toolbar showing the binding failures button.

Cuando no hay errores de enlace en la ventana de herramientas, el icono se muestra como gris sin un número junto a él. Esto resulta útil al ejecutar la aplicación. Si ve que el color del icono cambia a rojo con un número, haga clic en él para saltar rápidamente a la ventana de herramientas para ver qué errores de enlace se han producido. No es necesario estar atento a las ventanas de herramientas de Visual Studio. Cuando se produce un error en un enlace, el icono se lo indicará inmediatamente.

Screenshot of the in-app toolbar showing the binding failures button with no failures.

También aparece un icono similar en la ventana de herramientas Árbol visual dinámico.

Screenshot of the binding failures button within the Live Visual Tree tool window.

A continuación se muestra una descripción de todos los componentes de la ventana de herramientas Errores de enlaces XAML.

Screenshot of XAML Binding Failures tool window.

  • La barra de herramientas de la parte superior contiene los siguientes botones:
    • Borrar la lista de errores: esto es útil si está a punto de mostrar una nueva página en la aplicación y desea ver si se muestran errores de enlace. Al iniciar una nueva sesión de depuración, la lista se borra automáticamente.
    • Eliminar filas seleccionadas: si se ha corregido un error o no es relevante, puede eliminarlo de la lista. Las filas eliminadas se mostrarán de nuevo si se vuelve a producir un error en el enlace.
    • Borrar todos los filtros: si hay filtros en la lista, como buscar texto, este botón los borrará y mostrará la lista completa.
    • Combinar duplicados: a menudo, el mismo enlace producirá un error muchas veces en una fila cuando se encuentra dentro de una plantilla de elemento. Cuando se selecciona el botón Combinar duplicados (con un contorno alrededor de él), todos los errores duplicados se muestran como una sola fila. La columna Recuento mostrará cuántas veces se produjo el error.
  • El cuadro Buscar errores de enlace situado en la esquina superior le permite filtrar los errores solo a los que contienen texto específico.
  • Las columnas de la tabla, en orden, muestran:
    • Un icono que muestra si la fila es para un error o una advertencia.
    • Un icono que muestra corchetes angulares <> si se admite la navegación al {Binding} con error en XAML. Consulte la sección Plataformas admitidas.
    • Contexto de datos: este es el nombre de tipo del objeto de origen del enlace.
    • Ruta de acceso de enlace: esta es la ruta de acceso de propiedad del enlace.
    • Destino: este es el tipo y el nombre de propiedad donde se establecerá el valor del enlace.
    • Tipo de destino: es el tipo esperado de la propiedad de destino del enlace.
    • Descripción: esta columna contiene más información sobre lo que exactamente produjo un error para el enlace.
    • Archivo, línea y Proyecto: si se conoce, esta es la ubicación en XAML donde se define el enlace.
  • Al hacer clic con el botón derecho en una fila o varias filas seleccionadas, se mostrará un menú contextual, con opciones estándar para mostrar u ocultar columnas o agruparlas. Otras opciones son las siguientes:
    • Copie todo el texto de una fila o simplemente una sola columna en el Portapapeles.
    • Copiar error original copiará el texto que apareció en la ventana de salida de depuración.
    • Ver origen irá al origen de enlace en XAML para una fila seleccionada.
    • Restablecer columnas deshará todos los cambios en la visibilidad y la ordenación de columnas, lo que le devolverá rápidamente a lo que se mostraba originalmente.

Para ordenar la lista, haga clic en cualquier encabezado de columna. Para ordenar de nuevo por una columna adicional, mantenga presionada la tecla Mayús y haga clic en otro encabezado de columna. Para seleccionar las columnas que se muestran y las que están ocultas, seleccione Mostrar columnas en el menú contextual. Para cambiar el orden en que se muestran las columnas, arrastre cualquier encabezado de columna hacia la izquierda o la derecha.

Después de hacer doble clic en una fila o presionar Entrar para navegar al origen, puede presionar F8 o Mayús+F8 para bajar o subir a través de la lista de errores de enlace. Esto es como otros paneles de Visual Studio que muestran una lista.

Plataformas compatibles

La mayoría de las plataformas XAML se admiten si los errores de enlace se escriben en la salida de depuración. Algunas plataformas proporcionan información adicional de origen al depurador que permite navegar a dicho origen.

Plataforma Compatible Se admite ir al origen
WPF .NET Framework No
WPF .NET 5.0 RC2+
UWP No
WinUI3 desktop No
MAUI (Multi-platform App UI) No
Xamarin 4.5.0.266-pre3+
Xamarin antes de la versión 4.5.0.266-pre3 No No

La opción Recarga activa de XAML debe estar habilitada en Visual Studio para navegar al origen para que funcione. Esta opción se encuentra en el cuadro de diálogo Herramientas>Opciones>Depuración:

Screenshot of the XAML Hot Reload options dialog.

Navegar al origen solo funciona para los enlaces definidos en los archivos de código fuente XAML, no si se crean a través del código. Puede ver claramente qué filas admiten navegar al origen. Si no hay ningún icono de corchete angular en la segunda columna, no se admite la navegación al origen, por ejemplo, con la fila resaltada en la captura de pantalla siguiente:

Screenshot showing a XAML binding failure without a source location.

Para WPF en .NET Framework, los errores de enlace de datos deben mostrarse en la salida de depuración del panel Errores de enlaces XAML para detectarlos y mostrarlos. La opción para esto se encuentra en el cuadro de diálogo Herramientas >Opciones>Depuración>Ventana de salida>Configuración de seguimiento de WPF. Si el valor es Desactivado o Crítico, los errores de enlace de datos no se escriben en la salida de depuración y no se pueden detectar. Con WPF en .NET 5, .NET 6 y versiones posteriores, la configuración de salida del enlace de datos no afecta a la lista de errores.

Screenshot of WPF output options.