c# - CollectionView.DeferRefresh() 抛出异常

标签 c# exception deferred icollectionview

在某些情况下,由于大量 INotifyChangedProperties 事件,您有许多 UI 更新。在这种情况下,当所有属性都像批量设置时,您可能希望只向 UI 发出一次更改信号。

我发现这篇很棒的文章解释了如何延迟 ViewCollection 的刷新:

http://marlongrech.wordpress.com/2008/11/22/icollectionview-explained/

但是,当 View 被延迟并且我尝试向集合中添加一些内容时,我得到了一个异常。我不明白为什么不允许这样做。这就是它的全部意义。

InvalidoperationException: Cannot change or check the contents or Current position of CollectionView while Refresh is being deferred.

有谁知道如何解决这个问题? 非常感谢,

最佳答案

我认为您误解或歪曲了有关该主题的 MSDN 帮助。他们说你不必修改底层集合来排序或过滤。他们并不是说您不能修改基础集合。 OP有一个非常有效的观点。我们有一个已经为用户排序和过滤的大型集合,它显示在列表框中。当用户选择这些记录的范围并想要删除它们时,我们被迫进入 ListCollectionView 为每个被删除的项目刷新 View 的情况。

我认为 OP 的问题非常有道理。性能是可怕的,因为我们对大量数据有多个过滤器。 DeferRefresh 在像 ListCollectionView 这样的类上有真正的用途,但在您最需要它的时候莫名其妙地禁用了插入和删除。

关于c# - CollectionView.DeferRefresh() 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6032132/

相关文章:

c# - 实体和 POCO 的区别

c# - 更新mysql表出现错误

java - Java异常中的HTTP代码

jquery - .resolve() 和 .promise() 有什么区别?

c# - 获取 json 元素的标签及其 id

java - 为 Jackson 自定义解串器抛出带有 HTTP 状态代码的自定义异常

android - 自定义 pageradapter 上的空指针异常

ios延迟位置更新无法延迟

JavaScript/jQuery Promise 链

c# - 如何解决 WPF 应用程序中的字体呈现问题?