我注意到一种情况,如果我使用 RemoveRange 从 ObservableCollection 中删除所有项目,它确实会更新 UI,但如果至少有一个项目剩余,则不会。通过查看 ObservableCollection 源代码 here ,我看不到他们正在刷新内部 Items 集合的具体内容。我基本上是对 ObservableCollection 进行子类化并实现我自己的 OnCollectionChanged 行为以防止 UI 性能问题并面临这个问题。在这个方向上有什么想法吗?关于如何刷新 observablecollection 的任何指示?
谢谢, 周杰伦
最佳答案
当您的 UI 在 OnCollectionChanged
中激活时,您是否在 NotifyCollectionChangedEventArgs
中使用了 OldItems
和 NewItems
?
ClearItems
方法或@CarbineCoder 答案链接中的 Add/Remove Range 方法不会使 OldItems
和 NewItems
到 NotifyCollectionChangedEventArgs
。
它只有 NotifyCollectionChangedAction.Reset
。
我认为,如果您的 UI 代码根据 OldItems
和 NewItems
进行了修改,则它无法调用 ClearItems
或自定义实现的 Range 方法,例如链接。
关于c# - 刷新 ObservableCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39366348/