window phone list box使用收藏,mvvm ItemsControl数据绑定

具体case是,最近做的window phone7项目在异步加载数据并用itemsControl展示时,ItemsControl模板渲染慢,渲染事件几乎是异步加载数据事件的3倍;为了解决这个问题尝试多种方法但最终依旧不明显;无意间看到了下面的几篇文章,获益匪浅,很轻松的解决了这个问题;欣喜之至便将其收藏和大家分享;

 1.首先关于列表控件性能统计分析 

作者最后推荐使用LazyListBox,一种在滑动时使用简单模板,在停止滑动时再换为正常(即复杂UI)的模板,具体的可以参考 http://blogs.msdn.com/b/ptorr/archive/2010/10/12/procrastination-ftw-lazylistbox-should-improve-your-scrolling-performance-and-responsiveness.aspx

 2.关于UI 渲染缓慢的问题

首先我们的项目用的是MVVM框架,绑定到UI Itemscontrol的是一个ObversableCollection<T>对象,然后UI给ItemsControl设置ItemTemplate,ViewModel里通过异步加载数据并添加到ObversableCollection中,因为ObversableCollection实现了接口INotifyPropertyChanged接口,所以向ObversableCollection里添加或删除Item都会由UI自动更新列表中的项,但是问题是当循环向ObversableCollection中添加数据时,UI渲染就变得非常缓慢;开始本人也以为是没添加一项就会更新UI,可是实际结果却是基本等到所有想都添加完了以后UI才会渲染显示,这就是问题根本所在,加入我又50条或更多数据,页面基本卡了;然后看了这篇文章List Scroll with Items as Image/Description from web - Bing Image Search Experiment作者详细介绍了具体原因并提供了解决办法,哇困扰的问题终于解决了,收藏在这里了。

 

alexis的对各列表控件性能评估

ListBox Scroll Performance

 

posted @ 2012-02-16 09:37  J默  阅读(517)  评论(0编辑  收藏  举报