【问题标题】:How to use the UWP Toolkit's Incremental Loading Collection helper for adding new data如何使用 UWP 工具包的增量加载集合助手添加新数据
【发布时间】:2018-05-01 01:07:43
【问题描述】:

在 UWP 工具包示例中,在增量加载集合场景中,创建了一个 Person 类型的列表,其中包含 200 个项目,并且在演示帮助程序时,似乎需要读取更多项目,然后从现有列表中获取其他项目:

public async Task<IEnumerable<Person>> GetPagedItemsAsync(int pageIndex, int pageSize)
{
    // Gets items from the collection according to pageIndex and pageSize parameters.
    var result = (from p in _people
                  select p).Skip(pageIndex * pageSize).Take(pageSize);

    // Simulates a longer request...
    await Task.Delay(1000);

    return result;
}

但是,如果您想调用 API 来获取新项目并将它们添加到列表中呢?我想做什么并获得关于如何做的建议:

  1. 我从一个 ListView 开始,其中填充了我根据对返回 JSON 结果的 Web API 的初始调用填充的对象。通常一次只退回大约 25 件商品。
  2. 我希望能够在用户向下滚动时检测到他们已经到达列表视图的末尾并且需要获取更多项目
  3. 然后当到达列表末尾时,调用相同的 API 并获取下一个 25,然后将它们添加到 ListView

我觉得这很容易做到,但我无法从示例中弄清楚如何执行第 2 步和第 3 步。

任何建议都会很棒!

谢谢, 瑞克

【问题讨论】:

    标签: windows-community-toolkit


    【解决方案1】:

    您需要更改 GetPagesItemsAsync 方法来调用您的 API 并返回项目

    public async Task<IEnumerable<Person>> GetPagedItemsAsync(int pageIndex, int pageSize)
    {
        // Call into your API classes to return a new collection
        var people = await PeopleClient.GetPeople(pageIndex);
        return people;
    }
    

    在本例中,PeopleClient 是一个使用 HttpClient 类对某些资源进行 HTTP 调用并将结果作为 Person 对象返回的类。

    【讨论】:

    • 好的,帮了大忙,谢谢。看起来这适用于我关于确定何时到达滚动查看器中的列表视图末尾的问题: private void ScrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e) { var scrollViewer = (ScrollViewer)sender; if (scrollViewer.VerticalOffset == scrollViewer.ScrollableHeight) Debug.WriteLine("滚动线结束"); }
    • IncrementalLoadingCollection 通过它实现的 ISupportIncrementalLoading 接口为您完成这项工作
    猜你喜欢
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 2019-12-30
    相关资源
    最近更新 更多