欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > 内容正文

Windows phone UI虚拟化和数据虚拟化(二)

来源: 开发者 投稿于  被查看 32646 次 评论:184

Windows phone UI虚拟化和数据虚拟化(二)


我们学习了wp的ui虚拟化。
今天来和大家分享一下wp的数据虚拟化。

和ui虚拟化一样,尽管我们要显示的数据有成百上千条,但我们只在内存中,加载我们需要展示在屏幕上的

若干条。随着列表的滑动,我们添加将要显示在屏幕上的数据条目,删除已经不再展示区的条目。保证内存中

加载的数据条目只有很少的一部分(具体数目根据情况定制)。

虚拟化的优点也显而易见了,有效地节省内存。

不知道各位看到这里,心里会不会说,通过上面的描述,这个,这个,不就是【点击】/【滑动】 加载更多吗?

话说滑动加载真心弱爆了。。。也不要纠结怎么判断触底没触底了。

来!开始我们的数据虚拟化!

接着用上一篇的Demo,我们来看一个基本的列表数据绑定。

<
【.cs】

这个是,我们通常的用法。没有任何问题。但是,我们要实现我们想要的只加载屏幕上显示的一页(9条)数据。

该如何着手呢?保持List只有9条很容易,但是当list只有9条恰好一页的时候,我们知道ListBox,LLS的滚动条。
根本就不会滚动。因为列表控件认为你的数据源不是1000条,而是9条。

那么列表控件是根据什么来判断数据源的总数呢?
开始思考。。。3 。。。    2。。。。。1。。。对,答案就是集合的【Count】属性。

所以我们第一步要做的就是,骗过这些列表控件。给他们一个"假的" 【Count】属性

下面我们定义一个泛型类,继承Ilist<T>等几个接口。

省略-----

控件在绑定后,遍历数据源时。我们的索引

就是pageindex 页码, pagesize

   

   

   

我们运行,上下滑动,看一下效果s

   

比起点击加载,滑动加载,以数据虚拟化的方式,内存占用更少。(滑动加载数据源是不断被add的并没有delete)

另一点在用户体验上,滚动条的变化也给了用户预期,列表到底有多少数据。

当然我这里只是演示性的demo。具体应用还有很多需要注意的地方。比如说如果数据来源于网络,从磁盘读取,较慢的时候。

就需要一些异步的的读取处理。在实现索引器的时候我们这里是根据固定的页数移除,还可以根据最近的加载时间判断哪些页面要移除等等。

   

回答正确的,月薪

相关频道:

用户评论