在调度程序上更新大型可观察集合的属性

时间:2014-03-21 11:15:11

标签: wpf

我有一个大的可观察集合,让我们说一个具有属性IsManager的对象。这个绑定在数据网格上。现在在某些事件上我需要更新此属性。由于事件处理程序在后台线程上处理事件,我需要在Dispatcher上更新它。我正在使用后台优先级调用Dispatcher.BeginInvoke。由于此集合很大(超过50000条记录),因此网格搜索等其他操作的UI变得迟钝。

我们有一些可以解决这个问题的方法吗?

此致

1 个答案:

答案 0 :(得分:0)

绑定到具有50000行的网格的ObservableCollection<T>将始终导致更新的许多问题。

更好的解决方案是不要使用ObservableCollection<T>使用List<T>,然后当您需要应用更新时,请使用全新的更改网格的ItemsSource属性List<T>(通过绑定表达式)。

如果替换ItemsSource,则网格将仅为网格视口创建行容器,这将大大减少UI线程(假设已将虚拟化应用于网格)