【发布时间】:2011-01-24 07:19:57
【问题描述】:
我有一个绑定到 ListBox 的地址的 ObservableCollection。然后在 ItemTemplate 中,我使用 {Binding .} 绑定到当前地址记录。这导致我的地址使用他们的 ToString 方法显示,我已设置该方法来格式化地址。一切都很好,除非我更新单个地址记录的属性,UI 中的列表不会更新。添加/删除到列表会更新 UI(使用 ObservableCollection 行为)。如果我直接绑定到地址上的属性,UI 会更新(使用 Address 对象的 INotifyPropertyChanged 行为)。
我的问题是,有没有办法将整个对象的更改通知 UI,以便我仍然可以使用这种语法,或者我是否需要在我的地址类型上添加一个 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 data-binding listbox