为什么当我在 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}" />
我错过了什么?
编辑:为了澄清一些事情,Joel 和 Alan 对于需要实现的 INotifyPropertyChanged 接口都是正确的。实际上我确实实现了它,但它仍然不起作用。
我不能使用多个 TextBlock 元素,因为我正在尝试将 Window Title 绑定到全名,并且 Window Title 不采用模板。
最后,添加复合属性“FullName”并绑定到它是一个选项,但我仍然想知道为什么当绑定使用转换器时不会发生更新。即使我在转换器代码中放置了一个断点,当对基础数据进行更新时,调试器也不会到达那里:-(
谢谢,乌里