ObservableCollection.Insert 速度很慢
如题,有没有什么办法可以解决?
加的数据越多,就会越慢。
//定义的数据类型
public class RowData : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPorpertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
private ObservableCollection<string> dataArray;
public ObservableCollection<string> RowDataArray
{
get { return dataArray; }
set
{
if (dataArray != value)
{
dataArray = value;
OnPorpertyChanged("RowDataArray");
}
}
}
private string rowTitle;
public string RowHeader
{
get { return rowTitle; }
set
{
if (value != rowTitle)
{
rowTitle = value;
OnPorpertyChanged("RowHeader");
}
}
}
private ObservableCollection<string> foregroundArray;
public ObservableCollection<string> ForegroundArray
{
get { return foregroundArray; }
set
{
if (foregroundArray != value)
{
foregroundArray = value;
OnPorpertyChanged("ForegroundArray");
}
}
}
private ObservableCollection<string> backgroundArray;
public ObservableCollection<string> BackgroundArray
{
get { return backgroundArray; }
set
{
if (backgroundArray != value)
{
backgroundArray = value;
OnPorpertyChanged("BackgroundArray");
}
}
}
}
//添加数据
foreach (RowData rowdata in Variablemodel.CollectionData)
{
rowdata.RowDataArray.Insert(nColIndex, "");
rowdata.BackgroundArray.Insert(nColIndex, null);
rowdata.ForegroundArray.Insert(nColIndex, "Black");
}
第一次: 0.734s
第二次:1.125s
第三次: 2.062s
。。。
[解决办法]
不知道你这里增加的时候是不是数据量极大~~ 如果是这样的话,建议再服务器端进行分页~~
[解决办法]
看下是不是控件上绑定的什么属性写错了。
发生异常就会变得很慢。
[解决办法]
个人觉得还是ui上绑定的问题,比如用到了内部逻辑复杂的converter等。你不做数据绑定,仅仅插入数据到集合中,试试,应该会很快吧。