1

我在服务器上有一些 JSON api,我想用它来聊天。所以我使用HttpWebRequest, Respond, ... 并反序列化为ObservableCollection<ChatMessage>. 一切正常。我有我的类,它被添加到 datacontext 并且该类包含上面的集合(ObservableCollection<ChatMessage> entries它绑定到列表框,一切都显示得很好。现在,如果我想在服务器上重新加载该文件的内容,我首先制作了我所做的一切时间并将集合替换entries为新集合。但这不会触发PropertyChangedCollectionChanged视图仍然绑定到旧集合。那么最好的“修复”是什么?

4

1 回答 1

1

从技术上讲,您的收藏不会改变 - 它会被新的取代,因此 CollectionChanged 不会被解雇。

您需要在包装类上实现 INotifyPropertyChanged,当您替换集合时,触发 PropertyChanged 事件以通知 UI。

另一种解决方案是不替换集合,而是清除其项目并将新条目添加到该集合中。您可以通过比较集合(旧的和新的)并添加新条目/删除不再在新列表中的条目来以更智能的方式执行此操作。

于 2012-10-11T09:33:46.030 回答