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:
- Für WPF: Übersicht über die Datenbindung – WPF .NET
- Für UWP: Übersicht über die Datenbindung – UWP-Anwendungen
- Für Xamarin.Forms: Xamarin.Forms-Datenbindung – Xamarin
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:
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.
Durch Doppelklicken auf diese Zeilen wird der XAML-Quellcode für die Bindung geöffnet, wie in der folgenden Abbildung dargestellt:
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.
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.
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.
Ein ähnliches Symbol wird auch im Toolfenster Visuelle Echtzeitstruktur angezeigt.
Nachfolgend finden Sie eine Beschreibung aller Komponenten des Toolfensters „XAML-Bindungsfehler“.
- 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.
- Weitere Informationen finden Sie unter Binding.Source.
- Bindungspfad: Dies ist der Eigenschaftspfad für die Bindung.
- Weitere Informationen finden Sie unter Binding.Path.
- Ziel: Dies ist der Typ und der Eigenschaftsname, für den der Wert der Bindung festgelegt wird.
- Weitere Informationen finden Sie unter BindingExpressionBase.Target und BindingExpressionBase.TargetProperty.
- Zieltyp: Dies ist der erwartete Typ der Zieleigenschaft der Bindung.
- Weitere Informationen finden Sie unter BindingExpressionBase.TargetProperty.
- 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:
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:
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.