如何在WP应用程序中从ObservableCollection加速ListBox填充?

时间:2014-05-27 17:21:00

标签: silverlight windows-phone-8 binding listbox observablecollection

我有一个WP8 Silverlight应用程序。其中一个页面包含一个名为ReorderListBox的修改后的ListBox控件,该控件通过ItemsSource属性绑定到ObservableCollection。

当ObservableCollection有20多个项目并且在代码中重新填充时,屏幕上ListBox更新的速度明显较低。看来,当我看到新内容时需要1-2秒。

在没有这么大的延迟的情况下,快速完成这项工作的最佳策略是什么?

1 个答案:

答案 0 :(得分:0)

以下是我的提示和技巧:

  • 对ListBox使用VirtualizingStackPanel' ItemsPanel。为获得最佳效果,项目应明确设置高度。

  • 不要一次添加100个元素。尝试一次添加10个,然后释放UI线程一段时间(50-200ms),然后再添加10个,依此类推。试验数字。

  • 不要使用数据绑定。是的,它很酷,但它比手动设置值要慢。 (当然,绑定一些东西不是问题,但是当你有200个具有10个绑定属性的项目时 - 它可能会变慢。)

  • 使用延迟加载,如AMR建议的那样。我们的想法是只加载屏幕上可见的项目。但是,您必须在互联网上搜索更多信息。

  • 研究和实验。还有其他方法可以做到这一点吗?什么可以使它更快/更慢?恕我直言,尝试不同的策略一般非常有用 - 你了解事情的行为,与他们相关的一些问题,以及对一个场景最好的事情,对另一个场景来说可能不是最佳的 - 所以你知道的越多,经验越多 - 越多越好。

修改

还有一件事:

  • 如果可能,简化ItemTemplate的Visual树。这很少是一种选择,但有时会有所帮助。