Почему это происходит, когда я использую конвертер в моем выражении привязки в WPF, значение не обновляется при обновлении данных.
У меня есть простая модель данных Person:
class Person : INotifyPropertyChanged
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Мое привязывающее выражение выглядит следующим образом:
<TextBlock Text="{Binding Converter={StaticResource personNameConverter}" />
Мой конвертер выглядит следующим образом:
class PersonNameConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Person p = value as Person;
return p.FirstName + " " + p.LastName;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Если я привяжу данные без конвертера, он отлично работает:
<TextBlock Text="{Binding Path=FirstName}" />
<TextBlock Text="{Binding Path=LastName}" />
Что мне не хватает?
EDIT: Чтобы просто прояснить некоторые вещи, Джоэл и Алан верны в отношении интерфейса INotifyPropertyChanged, который должен быть реализован. В действительности я действительно реализую его, но он все еще не работает.
Я не могу использовать несколько элементов TextBlock, потому что я пытаюсь связать заголовок окна с полным именем, а заголовок окна не принимает шаблон.
Наконец, это возможность добавить составное свойство "FullName" и привязать его, но мне все еще интересно, почему обновление не происходит, когда привязка использует конвертер. Даже когда я помещаю точку прерывания в код конвертера, отладчик просто не появляется там, когда обновление выполняется с базовыми данными: - (
Спасибо, Uri