【问题标题】:Replace ObservableCollection for another not fire PropertyChanged将 ObservableCollection 替换为另一个不触发 PropertyChanged
【发布时间】:2012-10-11 17:33:46
【问题描述】:

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

【问题讨论】:

    标签: c# observablecollection inotifypropertychanged


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 2010-10-28
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多