增量加载

适合 用于数据源来自网络的场景,如果网络状态欠佳,获取数据会耗费更长的时间,让用户一直等待将所有数据加载完成再进行下一步操作,有损用户体验。一个较好的方案是先提取一部分数据,当用户需要查看更多数据时再实时加载,这样做可以大大缩短提取数据的时间,改善用户体验,这种方案可称为增量加载。

增量加载由ListViewBase类支持,只有从ListViewBase类派生的控件类型才支持增量加载(如 ListView、GridView等)。此外,作为数据源的集合对象需要实现ISupportIncrementalLoading接口才能使用增量加载功能。为了能在数据源集合中的数据项发生变化后即使更新用户界面上的数据视图,集合类型也应该实现INotifyCollectionChanged接口(位于System.Collections.Specialized命名空间)。

位于System.Collections.ObjectModel命名空间下的ObservableCollection<T>类已实现了该接口,故应该使用该泛型集合类。

综上所述,实现数据的增量加载的一种较好的做法是从ObservableCollection<T>类派生出一个自定义类,同时实现ISupportIncrementalLoading接口,这样可以减少一些工作量。

下面示例中的集合主要存放double类型的元素。

    class MyDataCollection:ObservableCollection<double>,ISupportIncrementalLoading
    {
        /// <summary>
        /// 指示加载操作是否正在进行
        /// </summary>
        bool isLoading = false;
        /// <summary>
        /// 用于产生随机数的对象
        /// </summary>
        Random rand = new Random();
        /// <summary>
        /// 要加载的最大项目数
        /// </summary>
        const uint MAX_ITEM_COUNT = 10000;
        public IAsyncOperation<LoadMoreItemsResult> LoadMoreItemsAsync(uint count)
        {
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值