Toolroom Tech Blog

Devlopers Digest

Convert To Yourself

WPF Databinding debuggen

Da hat man seine XAML View endlich fertig, doch aus irgendeinem Grund werden keine Daten angezeigt. Wie kann man nun rausfinden, ob das Binding funktioniert? Eine einfache Möglichkeit, die meines Erachtens in keinem Projekt fehlen sollte, ist ein so genannter DebuggingConverter. Der hat nur eine Aufgabe: Daten durchzuschleusen, damit man einen Breakpoint setzen kann.

Ohne um den heißen Brei herumzureden, hier ein Beispiel:

Das Problem

Im LongListSelector werden keine Daten angezeigt.

<toolkit:LongListSelector ItemsSource="{Binding UserGroups}">
</toolkit:LongListSelector>

Die Lösung...

... die in keinem WPF oder Silverlight Projekt fehlen sollte sieht so aus:

 1) Neue Klasse: DebuggingConverter

Ich bevorzuge es den Debugger mittels Debugger.Break() zum Stoppen zu zwingen, so minimiert man die Gefahr, den DebuggingConverter unnötig im Code zu vergessen, was erstens unschön ist und zweitens zu Verwirrungen führen kann.

public class DebuggingConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        Debugger.Break(); //Debugger stops here

        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        Debugger.Break(); //Debugger stops here

        return value;
    }
}

 2) Debugger als Resource verfügbar machen

Damit der Converter in der gesamten Applikation zur Verfügung steht, legen wir ihn als Resource in der App.xaml ab.

<Application.Resources>
    <converters:DebuggingConverter x:Key="DebuggingConverter"/>
</Application.Resources>

3) Verwenden

<toolkit:LongListSelector ItemsSource="{Binding ContactGroups, Converter={StaticResource DebuggingConverter}}">
</toolkit:LongListSelector>
Loading