如何通过 VB.NET 中的可观察集合将两个列表链接在一起?

编程


嗨,大家好

这里我们有包含 3 个字段的 listORG:

Idx、练习曲、名称
———————————-
约翰 1 首练习曲
约翰 2 练习曲
约翰三首练习曲
4 研究约翰四书
5 练习曲 5 快乐
6 练习曲 6 快乐
约翰 7 练习曲
约翰 8 练习曲
9 练习曲 9 快乐

这里我们有 listHowMany :

Idx , 名称 , 练习曲数量
———————————————————-
约翰一书 6
2 快乐 2

所以如果你看到的话,第二个列表显示了约翰和梅里两人的练习曲数量。

所以我想通过 Observable Collection 来编程。 因为我想要这些列表中任何一个的更新,所以更新另一个。 例如添加新的、删除的或编辑的。

你能帮我解决这个问题吗?

我尝试过的:

实际上我尝试了一些来自互联网的代码,但没有成功。

解决方案1

您想要做的事情存在问题:您不能对两个不同的列表使用单个 ObservableCollection,虽然您可以将两个列表中的所有项目放入弱类型 ObservableCollection 并在访问它时适当地转换它们,但它不是与拥有单独的集合相同,并且会使您的代码更加复杂且难以阅读/维护。

您可以使用两个 ObservableCollections,这会工作得相当好 – 但即使如此,也只会在通过添加、删除或重新排序操作更改集合时引发事件。 当集合中的某个项目的成员发生更改时,您将不会收到事件: myObservableCollection(0).Name = "New name" 不会生成事件。

解决方案2

你会使用一个 CollectionViewSource 并使用分组。 我假设你正在使用 WPF。 这是一个示例: 如何:在 XAML 中使用视图对数据进行排序和分组 – WPF .NET Framework | 微软学习[^]。

您还可以使用以下功能执行以下操作 CollectionViewSource: 集合视图源 | 关于 WPF 您应该了解的 2,000 件事[^]

这是仅使用代码的示例: 根据两个或多个属性进行分组[^]

コメント

タイトルとURLをコピーしました