Diagnose der XAML-Datenbindung

Entwickler, die an XAML-Projekten arbeiten, müssen häufig XAML-Datenbindungsfehler in ihren Anwendungen erkennen und beheben. Jetzt gibt es in Visual Studio 2019, Version 16.8 oder höher, und in Visual Studio 2022 entsprechende Tools, die Ihnen beim Debuggen Ihrer Anwendung helfen, diese störenden Datenbindungsfehler zu finden. Beispiele für häufige Bindungsfehler sind die folgenden:

  • Bindung an einen Eigenschaftsnamen, der nicht existiert: {Binding Wrong.Name}.
  • Bindung an einen Wert mit falschem Typ, z. B. Bindung an einen booleschen Wert, wenn eine Enumeration erforderlich ist: Visibility="{Binding IsVisible}".

Da diese Bindungen zur Laufzeit mithilfe der Reflektion kompiliert werden, kann der XAML-Editor sie nicht immer abfangen, und Ihr Build wird dennoch erfolgreich sein. Der Fehler tritt nur zur Laufzeit auf.

Die XAML-Datenbindung wird in den folgenden Artikeln erläutert:

Bindungsfehler wurden immer in das Fenster der Debugausgabe in Visual Studio geschrieben. Aber es ist leicht, die Bindungsfehler in der Debugausgabe zu übersehen, da sie andere Informationen zum Debuggen enthält, die Bindungsfehler außerhalb des sichtbaren Bereichs scrollen. Hier ist ein Beispiel für einen WPF-Bindungsfehler im Fenster der Debugausgabe:

Screenshot of the output window containing a binding failure.

Der Bindungsfehler kann Hunderte von Zeilen vom oberen Rand des Fensters entfernt sein, und der Text sagt Ihnen nicht genau, bei welcher Bindung der Fehler aufgetreten ist, sodass Sie darüber nachdenken und ihn suchen müssen.

Jetzt können Sie im Toolfenster für XAML-Bindungsfehler deutlich sehen, welche Bindungen fehlerhaft waren, zusammen mit den relevanten Daten für jeden Fehler, z. B. dem Dateispeicherort innerhalb von XAML. Darüber hinaus gibt es viele nützliche Features für die Untersuchung der Fehler durch Suchen, Sortieren und sogar durch Öffnen des XAML-Editors, wobei der Fokus auf die fehlerhafte Bindung gelegt ist.

Screenshot of the XAML Binding Failures tool window.

Durch Doppelklicken auf diese Zeilen wird der XAML-Quellcode für die Bindung geöffnet, wie in der folgenden Abbildung dargestellt:

Screenshot of example bindings in the XAML editor.

Toolfenster für XAML-Bindungsfehler

Das Toolfenster für XAML-Bindungsfehler ist beim Debuggen verfügbar. Um es zu öffnen, wechseln Sie zu Debuggen>Fenster>XAML-Bindungsfehler.

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

Oder wählen Sie auf der Anwendungssymbolleiste die Schaltfläche Bindungsfehler aus. Die Zahl neben dem Symbol zeigt, wie viele Bindungsfehler im Toolfenster angezeigt werden.

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

Wenn keine Bindungsfehler im Toolfenster vorhanden sind, wird das Symbol grau angezeigt, ohne dass eine Zahl daneben steht. Dies ist hilfreich beim Ausführen Ihrer Anwendung. Wenn Sie sehen, dass das Symbol rot und mit einer Zahl versehen ist, klicken Sie darauf, um schnell in das Toolfenster zu wechseln und zu prüfen, welche Bindungsfehler aufgetreten sind. Sie müssen die Toolfenster von Visual Studio nicht ständig im Auge behalten. Wenn eine fehlerhafte Bindung auftritt, wird Ihnen das Symbol sofort angezeigt.

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

Ein ähnliches Symbol wird auch im Toolfenster Visuelle Echtzeitstruktur angezeigt.

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

Nachfolgend finden Sie eine Beschreibung aller Komponenten des Toolfensters „XAML-Bindungsfehler“.

Screenshot of XAML Binding Failures tool window.

  • Die Symbolleiste oben enthält die folgenden Schaltflächen:
    • Fehlerliste löschen: Dies ist hilfreich, wenn Sie eine neue Seite in Ihrer App anzeigen möchten, um zu prüfen, ob Bindungsfehler auftreten. Wenn Sie eine neue Debugsitzung starten, wird die Liste automatisch geleert.
    • Ausgewählte Zeilen löschen: Wenn ein Fehler behoben wurde oder nicht mehr relevant ist, können Sie ihn aus der Liste löschen. Gelöschte Zeilen werden erneut angezeigt, wenn die Bindung erneut fehlerhaft ist.
    • Alle Filter löschen: Wenn die Liste Filter enthält, z. B. die Suche nach Text, werden diese mithilfe dieser Schaltfläche gelöscht und die vollständige Liste angezeigt.
    • Duplikate kombinieren: Häufig tritt ein Fehler bei derselben Bindung mehrmals hintereinander auf, wenn sie sich innerhalb einer Elementvorlage befindet. Wenn die Schaltfläche Duplikate kombinieren ausgewählt ist (umrandet), werden alle doppelten Fehler in einer einzelnen Zeile angezeigt. In der Spalte Anzahl wird angezeigt, wie oft der Fehler aufgetreten ist.
  • Mit dem Feld Bindungsfehler suchen in der oberen Ecke können Sie die Fehler nur nach denjenigen filtern, die einen bestimmten Text enthalten.
  • Die Tabellenspalten (in der Reihenfolge) zeigen Folgendes:
    • Ein Symbol, das anzeigt, ob es sich bei der Zeile um einen Fehler oder eine Warnung handelt.
    • Ein Symbol, das spitze Klammern <> anzeigt, wenn die Navigation zu der fehlerhaften {Binding} in XAML unterstützt wird. Weitere Informationen finden Sie im Abschnitt Unterstützte Plattformen.
    • Datenkontext: Dies ist der Typname für das Quellobjekt der Bindung.
    • Bindungspfad: Dies ist der Eigenschaftspfad für die Bindung.
    • Ziel: Dies ist der Typ und der Eigenschaftsname, für den der Wert der Bindung festgelegt wird.
    • Zieltyp: Dies ist der erwartete Typ der Zieleigenschaft der Bindung.
    • Beschreibung: Diese Spalte enthält weitere Informationen darüber, was genau bei der Bindung fehlerhaft war.
    • Datei, Zeile und Projekt: Falls bekannt, ist dies die Stelle in XAML, an der die Bindung definiert ist.
  • Wenn Sie mit der rechten Maustaste auf eine Zeile oder mehrere ausgewählte Zeilen klicken, wird ein Kontextmenü mit Standardoptionen zum Ein- oder Ausblenden von Spalten oder zu deren Gruppierung angezeigt. Weitere verfügbare Optionen:
    • Kopieren Sie den gesamten Text einer Zeile oder nur einer einzelnen Spalte in die Zwischenablage.
    • „Ursprünglichen Fehler kopieren“ kopiert den Text, der im Fenster der Debugausgabe angezeigt wurde.
    • „Quelle anzeigen“ ruft die Bindungsquelle in XAML für eine ausgewählte Zeile auf.
    • „Spalten zurücksetzen“ macht alle Änderungen an der Sichtbarkeit und Sortierung der Spalten rückgängig, sodass Sie schnell zur ursprünglichen Anzeige zurückkehren können.

Zum Sortieren der Liste klicken Sie auf einen beliebigen Spaltenheader. Halten Sie die UMSCHALTTASTE gedrückt, und klicken Sie auf eine andere Spaltenüberschrift, um erneut nach einer zusätzlichen Spalte zu sortieren. Um auszuwählen, welche Spalten angezeigt und welche ausgeblendet werden, wählen Sie im Kontextmenü die Option Spalten einblenden aus. Zum Ändern der Reihenfolge, in der Spalten angezeigt werden, ziehen Sie einen beliebigen Spaltenheader nach links oder rechts.

Nachdem Sie einen Doppelklick auf eine Zeile ausgeführt oder die EINGABETASTE gedrückt haben, um zur Quelle zu navigieren, können Sie F8 oder UMSCHALT+F8 drücken, um sich in der Liste der Bindungsfehler nach unten oder oben zu bewegen. Dies entspricht anderen Bereichen in Visual Studio, die eine Liste anzeigen.

Unterstützte Plattformen

Die meisten XAML-Plattformen werden unterstützt, wenn Bindungsfehler in die Debugausgabe geschrieben werden. Einige Plattformen stellen zusätzliche Quellinformationen für den Debugger bereit, die das Navigieren zur Quelle ermöglichen.

Plattform Unterstützt Unterstützung der Navigation zur Quelle
WPF .NET Framework Ja Nein
WPF .NET 5.0 RC2+ Ja Ja
UWP Ja Nein
WinUI3 Desktop Ja Nein
MAUI (Multi-Platform App UI) Ja Nein
Xamarin 4.5.0.266-pre3+ Ja Ja
Xamarin vor 4.5.0.266-pre3 Nein Nein

Die Option „XAML Hot Reload“ muss in Visual Studio aktiviert sein, damit die Navigation zur Quelle funktioniert. Diese Option befindet sich im Dialogfeld Extras>Optionen>Debuggen:

Screenshot of the XAML Hot Reload options dialog.

Das Navigieren zur Quelle funktioniert nur für Bindungen, die in XAML-Quelldateien definiert sind, nicht aber, wenn sie durch Code erstellt wurden. Sie können deutlich sehen, welche Zeilen die Navigation zur Quelle unterstützen. Wenn in der zweiten Spalte kein Symbol für spitze Klammern zu sehen ist, wird die Navigation zur Quelle nicht unterstützt, z. B. bei der hervorgehobenen Zeile im folgenden Screenshot:

Screenshot showing a XAML binding failure without a source location.

Bei WPF in .NET Framework müssen Datenbindungsfehler in der Debugausgabe angezeigt werden, damit der Bereich „XAML-Bindungsfehler“ diese erkennt und anzeigt. Die Option hierfür befindet sich im Dialogfeld Extras>Optionen>Debuggen>Ausgabefenster>WPF-Ablaufverfolgungseinstellungen. Wenn die Einstellung entweder auf Aus oder Kritisch festgelegt ist, werden Datenbindungsfehler nicht in die Debugausgabe geschrieben und können nicht erkannt werden. Bei WPF in .NET 5, .NET 6 und höher hat die Einstellung für die Datenbindungsausgabe keinen Einfluss auf die Fehlerliste.

Screenshot of WPF output options.