深圳政协委员钟帆飞诈骗30亿

主持正义

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  27 随笔 :: 0 文章 :: 90 评论 :: 56257 阅读

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操作。

代码:

https://files.cnblogs.com/rentianlong/ListBoxHighEfficencyDemo.rar

只需要修改 lstPreNextMaxCount就可以限制ListBox最大的绑定数量。

我的例子里ListBox最多绑定数量不会超过150条。

 

 

 

 

 

 

posted on   jayce80  阅读(1610)  评论(6编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示