Отладка WPF Binding

WPF реализует весьма изящный подход к управлению отображением данных модели с использованием выражений {Binding}. Однако в некоторых случаях могут возникать сложности с пониманием того, что за значение было получено в результате связывания. В этой связи хочу упомянуть возможное решение, позволяющее в режиме отладки посмотреть конкретные используемые значения.
Решение не новое и возможно многие о нем знают, но для тех кто начинает работать с WPF оно может оказаться полезным.

Суть решения заключается в том, что связывание выполняется не напрямую а с использованием простого конвертера, который не выполняет никаких действий по преобразованию данных но дает возможность установить Breakpoint во время отладки и посмотреть что за объект был использован.

Код просто возвращает то же значение, которое получил (которое использовалось при привязке). Ставим точку останова на строке «return value» и проверяем значение.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Data;
using System.Diagnostics;

namespace classes
{
    public class TestConverter:IValueConverter
    {
        public object  Convert(object value, Type targetType,
            object parameter, System.Globalization.CultureInfo culture)
        {
            return value;
        }

        public object  ConvertBack(object value, Type targetType,
            object parameter, System.Globalization.CultureInfo culture)
        {
            return value;
        }
    }
}

А вот таким образом в нужном нам элементе реализуется привязка к данным. Создается объект Converter и используется в выражении {Binding}

<Window
    ...
    xmlns:classes="clr-namespace:classes">

<Window.Resources>
    <classes:TestConverter x:Key="tc"/>
</Window.Resources>
<Label Content="{Binding Path=TestField, Converter={StaticResource tc}}" />
</Window>

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *