我有一个WP8 Silverlight应用程序。其中一个页面包含一个名为ReorderListBox的修改后的ListBox控件,该控件通过ItemsSource属性绑定到ObservableCollection。
当ObservableCollection有20多个项目并且在代码中重新填充时,屏幕上ListBox更新的速度明显较低。看来,当我看到新内容时需要1-2秒。
在没有这么大的延迟的情况下,快速完成这项工作的最佳策略是什么?
答案 0 :(得分:0)
以下是我的提示和技巧:
对ListBox使用VirtualizingStackPanel' ItemsPanel。为获得最佳效果,项目应明确设置高度。
不要一次添加100个元素。尝试一次添加10个,然后释放UI线程一段时间(50-200ms),然后再添加10个,依此类推。试验数字。
不要使用数据绑定。是的,它很酷,但它比手动设置值要慢。 (当然,绑定一些东西不是问题,但是当你有200个具有10个绑定属性的项目时 - 它可能会变慢。)
使用延迟加载,如AMR建议的那样。我们的想法是只加载屏幕上可见的项目。但是,您必须在互联网上搜索更多信息。
研究和实验。还有其他方法可以做到这一点吗?什么可以使它更快/更慢?恕我直言,尝试不同的策略一般非常有用 - 你了解事情的行为,与他们相关的一些问题,以及对一个场景最好的事情,对另一个场景来说可能不是最佳的 - 所以你知道的越多,经验越多 - 越多越好。
修改强>
还有一件事: