c# - 刷新 ObservableCollection

标签 c# observablecollection

我注意到一种情况,如果我使用 RemoveRange 从 ObservableCollection 中删除所有项目,它确实会更新 UI,但如果至少有一个项目剩余,则不会。通过查看 ObservableCollection 源代码 here ,我看不到他们正在刷新内部 Items 集合的具体内容。我基本上是对 ObservableCollection 进行子类化并实现我自己的 OnCollectionChanged 行为以防止 UI 性能问题并面临这个问题。在这个方向上有什么想法吗?关于如何刷新 observablecollection 的任何指示?

谢谢, 周杰伦

最佳答案

当您的 UI 在 OnCollectionChanged 中激活时,您是否在 NotifyCollectionChangedEventArgs 中使用了 OldItemsNewItems

ClearItems 方法或@CarbineCoder 答案链接中的 Add/Remove Range 方法不会使 OldItemsNewItemsNotifyCollectionChangedEventArgs。 它只有 NotifyCollectionChangedAction.Reset

我认为,如果您的 UI 代码根据 OldItemsNewItems 进行了修改,则它无法调用 ClearItems 或自定义实现的 Range 方法,例如链接。

关于c# - 刷新 ObservableCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39366348/

相关文章:

xaml 中的 WPF ObservableCollection

c# - 用于开发的假 ssl 证书

c# - UWP/C# : ObservableCollection sort in-place (w/o scrolling)

wpf - 搜索和过滤ObservableCollection的有效方法是什么

c# - observablecollection 到 dataView 或 dataset

c# - 复制一个 ObservableCollection 项

c# - 无法加载文件或程序集 {此处的程序集名称} 或其依赖项之一。访问被拒绝

c# - : "Client side asynchronous frameworks"是什么意思

c# winforms datagridview 如何限制单元格输入?

c# - 序列化两个同名但子节点不同的节点