【发布时间】:2011-02-19 02:35:44
【问题描述】:
视图模型
我有一个名为 KeyMember 的 Member 类型的属性。 'Member' 类型有一个名为 Addresses 的 ObservableCollection。 Address 由两个字符串组成 - street 和 postcode。
查看
我有一个 ListBox,其项目源需要设置为 ViewModels 的 KeyMember 属性,并且它应该显示 Address 集合中所有过去地址的 Street。
问题
我的 ViewModel 和 View 关系建立正确。
我可以为上面的简单案例编写一个数据模板,如下所示
<ListBox ItemsSource="{Binding KeyMember.Addresses}">
<ListBox.ItemTemplate>
<DataTemplate DataType="Address">
<TextBlock Text="{Binding Street}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
如果我将 KeyMember 从类型 Member 更改为 ObservableCollection 假设集合,我很想知道如何编写 DataTemplate只有一个元素。我不确定这是否是一个有效的方案以及它的实施可行性。
PS:我知道对于集合中的多个元素,我将不得不实现 Master-Detail 模式/场景。我正在调查这个问题。
【问题讨论】:
-
我有点困惑。为什么要实现单元素集合,而不是简单地实现 INotifyPropertyChanged?它只是一个“实施步骤”,旨在最终处理 0 到 n 个元素的实际集合吗?您是否保证集合将始终只包含一个元素?
-
我正在学习数据绑定。我没有维护一个元素集合。我只是想知道我们是否可以在这种情况下绑定或该场景无效。假设集合中总是只有一个元素,我们可以数据绑定吗?对于我的实际场景,集合中有零个或多个元素,我正在研究主从模式。我已经成功实现了 INotifyPropertyChanged 并在必要时使用了 CollectionViewSource。
标签: wpf data-binding mvvm listbox