我有一个可绑定到列表框的地址的ObservableCollection。然后在ItemTemplate中,我使用{Binding。}绑定到当前地址记录。这导致我的地址显示使用我已设置格式化地址的ToString方法。一切都很好,除非我更新单个地址记录上的属性,UI中的列表不会更新。添加/删除列表确实更新UI(使用ObservableCollection行为)。如果我直接绑定到UI更新地址上的属性(使用Address对象的INotifyPropertyChanged行为)。数据绑定在使用{绑定}或{绑定}时未更新
我的问题是,有没有办法通知用户界面对整个对象所做的更改,以便我仍然可以使用此语法,或者是否需要在我的地址类型上放置DisplayText属性ToString方法并绑定到那个?仅供参考,这是一个MVVM架构,所以我没有直接在ListBox上调用Refresh的奢侈。
感谢您的任何帮助/想法。
<ListBox x:Name="AddressList" ItemsSource="{Binding Addresses}" Background="Transparent" BorderBrush="Transparent"
Width="200" HorizontalAlignment="Left">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding .}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这很有道理。虽然我认为我会坚持显示文本属性路由,因为我们需要支持美国和外国地址以及第二行,如您所述。为了在WPF方面取得成功,可能需要一个转换器类。对我来说,让实体类保持集中更有意义。如有必要,调用者可以将所有单个字段覆盖它。 – Mark 2010-03-07 15:32:28