【发布时间】:2013-10-24 06:34:26
【问题描述】:
我将 ObservableCollection 绑定到 WPF ListView。该列表中的数据来自 REST 服务。所以我从 REST-Service 获取数据并将其放入绑定的 ObservableCollection。 我定期调用 REST-Service 来检查更新的数据,这意味着可以删除、添加数据或更改项目的顺序。如何将这些更改反映到 ObservableCollection 中?每次从 REST 服务获取更新数据时,我都不想完全替换 ObservableCollection。如果 ObservableCollection 仅针对源数据中更改的条目进行更改,则会更加用户友好。因此,当在源数据中添加一个项目时,我想将此项目添加到 ObservableCollection 中与源数据(REST 服务)中完全相同的位置。对于已删除的项目和重新使用的项目也是如此。所以我只想更新更改的项目而不是整个集合。这可能吗?
【问题讨论】:
-
将 OnpropertyChanged 事件与属性一起使用。
-
用户友好是什么意思?是性能更高还是这样的 API 更容易使用?如果您必须自己实施该解决方案,这绝对不容易,因此不友好。如果您关心性能,则必须确定替换整个集合更好的阈值是多少。因此,对该决策本身进行评估也不是用户友好的任务。直到您想到某些特定方面,这将受益于逐项更新集合,只需替换它即可。它足够用户友好。
-
对于“用户友好”,我的意思是如果只有一项更改,用户不应该看到完整列表的刷新。所以用新集合完全替换旧集合对于最终用户来说并不是一个很好的 UI 体验。
-
您必须考虑另一个问题:您如何找到您收到的物品在收藏中?他们是否实现了 IEquitable 接口?
标签: c# wpf observablecollection