c# - 刷新ObservableCollection

原文 标签 c# observablecollection

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

谢谢,
周杰伦

最佳答案

OldItems中激活UI时,是否在NewItems中使用NotifyCollectionChangedEventArgsOnCollectionChanged

@CarbineCoder答案链接中的ClearItems方法或“添加/删除范围”方法不要将OldItemsNewItems设置为NotifyCollectionChangedEventArgs
它只有NotifyCollectionChangedAction.Reset

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

相关文章:

c# - 如何更新ObservableCollection的现有元素?

c# - 在Foreach循环C#中修改集合

c# - 用值替换字符串中的给定模式

c# - 按unicode类别拆分字符串

c# - 是什么导致GPIB无法响应

wpf - WPF-将列表框绑定(bind)到图像的ObservableCollection

c# - 为什么要处置一个肯定会很快被处置的物体?

c# - 如何使用MvvmCross 5 IMvxNavigationService获取PendingIntent?

c# - 使用LinQ过滤ObservableCollection

c# - Task <ObservableCollection <AppointmentItem >>不包含其中的定义