带有绑定列表框的WPF / DeferRefresh

时间:2009-09-23 20:17:17

标签: .net wpf listbox refresh

我正在尝试将一系列更新推送到我已绑定列表框的集合中。由于列表可能会变得很大,我试图关闭更新(排序等),直​​到我完成插入所有新项目。

我想:

using (col.DeferRefesh())
{
   .. add the items
}

但是这引发了一个异常,说我在DeferRefresh()打开时无法添加/删除项目。 做我想做的事情有适当的模式吗?

2 个答案:

答案 0 :(得分:1)

在CollectionView中添加或删除项目会导致InvalidOperationException,因为CollectionView的操作集IsAddingNewIsEditingItem标志为true。

您在DeferRefresh()中可以做的是更改排序说明。

This blog提供了DeferRefresh()的使用方法。此外,当您实际更改集合视图中的值时,推迟集合视图刷新几乎是矛盾的。

答案 1 :(得分:0)

要执行此操作,您需要实现/派生自己的集合并在集合级别实现延迟刷新功能,然后在延迟刷新完成时触发带有重置的集合更改事件作​​为更改类型