Fehlerhafte Bindungen prüfen

Wenn Sie ein Abonnement des Magazins 'DATENBANKENTWICKLER' besitzen, können Sie sich anmelden und den kompletten Artikel lesen.
Anderenfalls können Sie das Abonnement hier im Shop erwerben.

Fehlerhafte Bindungen prüfen

Wenn Sie mit C# programmieren, können Sie beim Debuggen bequem herausfinden, warum etwas nicht so funktioniert, wie Sie es sich vorstellen. Bei der Datenbindung von WPF-Elementen wird es komplizierter: Wenn etwa ein an ein Feld eines Objekts gebundenes Steuerelement nicht den gewünschten Wert anzeigt, kann dies verschiedene Gründe haben. Wenn das gebundene Element nicht gefunden werden kann, gibt es keine Fehlermeldung, und es wird auch schwierig, herauszufinden, woran es liegt. Dieser Artikel stellt ein paar Möglichkeiten vor, Licht ins Dunkel der Bindung zu bringen.

Verweis ins Leere

Manchmal ist man einfach betriebsblind oder unkonzentriert und gibt bei einer Bindung den Namen der falschen Eigenschaft ein. Dann bleibt das entsprechende Steuerelement schlicht leer! Wie aber finden Sie heraus, was genau nicht funktioniert? Der erste Ansatz ist: Die Ausgabe auf eventuelle Meldungen untersuchen. Nehmen wir den folgenden falschen Code zur Definition eines Grid-Elements mit Textfeldern – wie Sie sehen, kann schon ein Fehler bei der Groß-/Kleinschreibung zum Fehler führen:

<TextBox Grid.Column="1" Grid.Row="1" Text="{Binding Path=VorName}"></TextBox>

Als Ergebnis bleibt das Steuerelement leer, denn die Eigenschaft der an das Fenster gebundenen Klasse heißt nicht VorName, sondern Vorname (siehe Bild 1):

Das Feld Vorname bleibt erwartungsgemäß leer.

Bild 1: Das Feld Vorname bleibt erwartungsgemäß leer.

public class Kunde {
     public string Vorname { get; set; }
     ...
}

Nun stellen wir uns dumm und wollen herausfinden, warum das Feld keine Daten anzeigt. Eine Ausnahme ist auch nicht aufgetreten. Wertvolle Informationen liefert in diesem Fall das Ausgabe-Fenster (siehe Bild 2). Es liefert die folgende Meldung:

Dies war die Leseprobe dieses Artikels.
Melden Sie sich an, um auf den vollständigen Artikel zuzugreifen.

Bitte geben Sie die Zeichenfolge in das nachfolgende Textfeld ein

Die mit einem * markierten Felder sind Pflichtfelder.

Ich habe die Datenschutzbestimmungen zur Kenntnis genommen.