ObservableCollection.Insert 速度很慢

被吃了的狗 2012-10-09 04:09:34
如题,有没有什么办法可以解决?
加的数据越多,就会越慢。

//定义的数据类型
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
。。。
...全文
479 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
被吃了的狗 2013-01-22
  • 打赏
  • 举报
回复
引用 6 楼 wjq 的回复:
个人觉得还是ui上绑定的问题,比如用到了内部逻辑复杂的converter等。你不做数据绑定,仅仅插入数据到集合中,试试,应该会很快吧。
谢了,估计是这样子的了。这速度还是过得去,比直接绑定xml的数据好。
wjq 2013-01-21
  • 打赏
  • 举报
回复
个人觉得还是ui上绑定的问题,比如用到了内部逻辑复杂的converter等。你不做数据绑定,仅仅插入数据到集合中,试试,应该会很快吧。
被吃了的狗 2013-01-20
  • 打赏
  • 举报
回复
引用 4 楼 wjq 的回复:
估计是你的列表本身绑定了某个ui元素(ui元素本身又包含了某些费时操作),新增数据后导致ui更新所致。不知道你有多少元素,我用ObservableCollection插入5000-10000笔数据时间是毫秒级的。
是绑定的datagrid. template column. template 放了一个readonly 的textbox。因为要绑定cell的foreground 和 background,所以没有直接用text column. 如果用list的话,就会快很多,但是list不能实时刷新。
wjq 2013-01-11
  • 打赏
  • 举报
回复
估计是你的列表本身绑定了某个ui元素(ui元素本身又包含了某些费时操作),新增数据后导致ui更新所致。不知道你有多少元素,我用ObservableCollection插入5000-10000笔数据时间是毫秒级的。
yaohyan 2012-12-26
  • 打赏
  • 举报
回复
看下是不是控件上绑定的什么属性写错了。 发生异常就会变得很慢。
被吃了的狗 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
不知道你这里增加的时候是不是数据量极大~~ 如果是这样的话,建议再服务器端进行分页~~
[/Quote]

不是数据量问题。我换成List 就稍稍好一些了,但是还是比较慢
Architecture Net 2012-10-10
  • 打赏
  • 举报
回复
不知道你这里增加的时候是不是数据量极大~~ 如果是这样的话,建议再服务器端进行分页~~

8,734

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧