Silverlight 如何在WP应用程序中从ObservableCollection加速列表框填充?
我有一个WP8 Silverlight应用程序。其中一个页面包含一个修改后的ListBox控件,该控件通过ItemsSource属性绑定到ObservableCollection 当ObservableCollection有20多个项目,并以代码重新填充时,屏幕上列表框的更新速度明显较低。看起来,我需要1-2秒才能看到新内容Silverlight 如何在WP应用程序中从ObservableCollection加速列表框填充?,silverlight,windows-phone-8,binding,listbox,observablecollection,Silverlight,Windows Phone 8,Binding,Listbox,Observablecollection,我有一个WP8 Silverlight应用程序。其中一个页面包含一个修改后的ListBox控件,该控件通过ItemsSource属性绑定到ObservableCollection 当ObservableCollection有20多个项目,并以代码重新填充时,屏幕上列表框的更新速度明显较低。看起来,我需要1-2秒才能看到新内容 什么是快速完成这项任务的最佳策略,而不会造成如此严重的延迟?以下是我的技巧: 使用ListBox“ItemsPanel”的虚拟化StackPanel。为获得最佳结果,项目
什么是快速完成这项任务的最佳策略,而不会造成如此严重的延迟?以下是我的技巧:
- 使用ListBox“ItemsPanel”的虚拟化StackPanel。为获得最佳结果,项目应明确设置高度
- 不要一次添加100个元素。尝试一次添加10个,然后释放UI线程一段时间(50-200ms),然后再添加10个,以此类推。用数字做实验
- 不要使用数据绑定。是的,这很酷,但它比手动设置值慢。(当然,绑定一些东西不是问题,但是当您有200个项目和10个绑定属性时,它可能会变慢。)
- 按照AMR的建议,使用延迟加载。其思想是只加载屏幕上可见的项目。不过,你必须在互联网上搜索更多信息
- 研究和实验。你还有别的办法吗?什么能使它更快/更慢?我认为尝试不同的策略通常是非常有帮助的-你了解事物的行为,一些与它们相关的问题,以及什么对一个场景是最好的,对另一个场景可能不是最佳的-所以你知道的越多,体验的越多越好
- 如果可能,简化ItemTemplate的可视树。这很少是一种选择,但有时会有所帮助