解决WP8应用里ListBox绑定数据变多导致越来越卡
ListBox控件绑定数据,当滑动到底部的时候加载数据到列表上,这样就会产生一个问题,当ListBox上面绑定的数据有几千条的时候,界面将会卡顿,我们可以通过在ListBox上只绑定指定数量的数据,其余的都存在内存中,需要的时候再取出。假如ListBox在界面显示部分的上面有几百几千条在界面之上,可以将它存储在一个存储空间中(上入水池),需要的时候再从里面取出。当然下面的也一样。

当对ListBox所绑定的数据源进行Insert或Remove操作的时候,在存储到上入水池或从上入水池取数据的时候,由于当前手机界面所显示的那个商品会往下走或者往上走,所以需要设置ListBox中ScrollViewer的VerticalOffset。这样才能保证界面不跳跃。但是VerticalOffset要设置偏移多少,才能不跳跃呢?经测试发现VerticalOffset的值并不是像素值,而是ListBoxItem的数量,即VerticalOffset=1时,第一个ListBoxItem的底部与在手机显示的界面上端紧贴,第二个控件ListBoxItem在手机界面的顶部显示出来。当ListBox里面有50条数据时,ListBox里的ScrollViewer的ScrollableHeight值就是50,ListBox划到底部的时候VerticalOffset的值就是在手机上部的ListBoxItem的数量,假如界面上有4.3个Item,那么划到底部此时的VerticalOffset的值最大只能是50-4.3=45.7。
代码是在在ScrollViewer的状态改变事件中进行执行,这样比在ValueChanged进行操作要节约很多资源,只在列表停止滚动的时候 即:e.NewState.Name == "NotScrolling" 进行列表数据Remove和Insert操作。
代码:
http://files.cnblogs.com/rentianlong/ListBoxHighEfficencyDemo.rar
只需要修改 lstPreNextMaxCount就可以限制ListBox最大的绑定数量。
我的例子里ListBox最多绑定数量不会超过150条。
解决WP8应用里ListBox绑定数据变多导致越来越卡的更多相关文章
- MUI - 解决弹出输入法时页面高度变小导致底部上浮的问题
解决弹出输入法时页面高度变小导致底部上浮的问题 在有输入框的页面,当输入法弹出的时候,底部元素上浮遮盖了输入框,影响页面美观及功能.查找了一下,页面变窄是不可避免的.即使是设置绝对固定也是不可以的.因 ...
- 记录一个关于 Document.on绑定事件后,导致页面卡顿的情况
假设当前页面的js文件中有如下函数: function A(){ function B(); } function B(){ $(document).on("click",&quo ...
- 解决element 分页组件,搜索过后current-page 绑定的数据变了,但是页面当前页码并没有变的问题
前言上一篇写前台解决分页问题的时候没有这个问题,但是在实际项目后台中有遇到过,所以在这里专门说一下,如果参考前台分页出现这种问题了,也可以使用这种方法!bug:vue和element实现的后台分页,当 ...
- Devexpres下LookUpEdit绑定数据后会默认弹出数据框的解决办法
LookUpEdit绑定数据后会默认弹出数据框很不友好问题现象: 问题解决前的代码: lueManagement.Text = groupEntity.Name; 2 lueManagement.Ed ...
- ListBox和ComboBox绑定数据简单例子
1. 将集合数据绑定到ListBox和ComboBox控件,界面上显示某个属性的内容 //自定义了Person类(有Name,Age,Heigth等属性) List<Person> per ...
- 终极解决maya渲染层丢材质,变线框等问题
终极解决maya渲染层丢材质,变线框等问题 相信有很多同志在使用maya做灯光渲染的时候,经常能遇到渲染层的模型丢材质.变线框等问题,特别恶心.我也经常遇到,所以和大家分享一下我的解决或尽量避免的方法 ...
- Winfrom中ListBox绑定List数据源更新问题
Winfrom中ListBox绑定List数据源更新问题 摘自:http://xiaocai.info/2010/09/winform-listbox-datasource-update/ Winfr ...
- angularJS绑定数据中对标签转义的处理
一.问题 默认情况下,angularJS绑定的数据为字符串文本,不会对其中包含的html标签进行转义生成格式化的文本.在实际工作时碰到接口返回的数据带有html格式时该如何处理. 二.解决办法 1.引 ...
- angularJS绑定数据中对标签转义的处理二 与pre标签的使用
一.问题 默认情况下,angularJS绑定的数据为字符串文本,不会对其中包含的html标签进行转义生成格式化的文本.在实际工作时碰到接口返回的数据带有html格式时该如何处理. 二.解决办法 1.引 ...
随机推荐
- JAVA_JDBC
测试类: 1 import java.util.ArrayList; import java.util.List; /** * 创建数据库: * 1.加载驱动 * Class.forName(&quo ...
- 使用Zencoding的升级版Emmet
最近vim7.4也更新了,zengcoding好像停止了更新,更换成emmet了,使用还是和Zencoding一样. emmet的地址在http://emmet.io/ 支持很多的编辑器和IDE. ...
- 在centos中php 在连接mysql的时候,出现Can't connect to MySQL server on 'XXX' (13)
原文连接:http://hi.baidu.com/zwfec/item/64ef5ed9bf1cb3feca0c397c 红色的是命令 SQLSTATE[HY000] [2003] Can't con ...
- jsp实现计算器
JavaBean package com.itheima.domain; import java.math.BigDecimal; public class BigDecimalDemo { priv ...
- Linux VIM python 自动补全插件:pydiction
Pydiction 可以是我们使用Tab键自动补全Python代码在Vim,是一款非常不错的插件. Pydiction不需要安装,所有没有任何依赖包问题,Pydiction主要包含三个文件. pyth ...
- kettle Row Normaliser(行转列)
表1 设置 表2
- cisco通过控制口或者通过远程配置交换机
学而不思则罔,思而不学则殆,每天坚持一小步,则成功一大步 下面我们通过Cisco Packet来模拟交换机和路由器的远程和控制台登录配置交换机. 交换机console口的连接与配置方法 (1),在Ci ...
- 查看Unix系统是32位还是64位
#getconf查看OS位数 以下经过测试了HP: getconf KERNEL_BITSLinux: getconf LONG_BITAIX: getconf KERNEL_BITMODE #AIX ...
- 用pelican搭建完美博客
前面有文章介绍本站采用了Python编写的Pelican静态生成博客系统, 之所以没有使用当前很火的Jekyll, 是因为它是Ruby编写, 而我又对Ruby没有啥兴趣, 所以还是选择了使用了我熟悉的 ...
- 初学C++,开博第一篇
几个维度相同的数组转置算法,这两种完全相同://注意:如果维度不同,转置会出错误,因为下标会越界...解决办法是把数组的维度调齐,或者是写到另一新数组中. for(int i=0;i<row;i ...