在开发WPF应用程序时,经常需要处理数据集合的变化。当集合的数据源是一个数组,并且这个数组不断地被外部因素修改时,面临着一个挑战:如何在不重置ItemsControl的ItemsSource的情况下,及时地通知集合的变化。本文将介绍一种解决方案,该方案通过创建一个继承自ObservableCollection
在WPF中,ItemsControl控件依赖于数据集合的INotifyCollectionChanged接口来通知数据的变化。然而,如果数据源是一个数组,并且数组的内容被外部修改,那么ObservableCollection
为了解决这个问题,创建了一个继承自ObservableCollection
提供了扩展方法,以便可以像这样包装数组:
int[] theArray = new int[1000000];
for (var i = 0; i < theArray.Length; i++)
theArray[i] = i;
var mon = theArray.AsMonitored();
var monProj = theArray.AsMonitoredProjected(i => i * i);
其中,AsMonitored
实现集合的主要类叫做MonitoredProjectedArray。
public class MonitoredProjectedArray : ObservableCollection