新的ObservableCollection与在循环中添加项目

时间:2012-02-01 15:37:32

标签: c# silverlight telerik observablecollection radchart

就速度和生成的通知量而言,是这段代码:

ObservableCollection<Foo> foo = new ObservableCollection<Foo>(bar);
this.SomeProperty = foo;

与:

相同
this.SomeProperty = new ObservableCollection<Foo>();

foreach (var v in bar) 
{
    this.SomeProperty.Add(v);
}

如果它们相同,是否有可能以某种方式关闭生成的通知?

目的: 我正试图加速在Silverlight中显示Telerik RadChart。即使在设置了包含ObservableCollection的属性之后,似乎还需要一段时间才能显示(并在浏览器应用程序中冻结)。绘制图表后,一切正常。

1 个答案:

答案 0 :(得分:7)

  1. 简介或测试它!根据文件, 添加,删除项目时发生PropertyChanged事件 更改,移动或刷新整个列表。因此,你可以 写一些只是订阅此事件的测试代码,看看是什么 发生。

  2. Fast performing and thread safe observable collection - 如果是由于持续不断的OnChanged事件,请考虑仅在批量更新后触发 - 有人已为您完成此项工作

  3. http://www.telerik.com/help/silverlight/radchart-performance-tips-and-tricks.html 特别针对您描述的关于页面一半的场景。他们的结论与2相同 - 事实上,代码看起来非常相似: - )

  4. 如果在实际发生绑定之前发生了冻结,那么我会确保延迟实际上不是基于渲染的,或者是因为另一种行为(比如加载集合所花费的时间)。同样,分析是你的朋友。