首页 > 解决方案 > 如何使用 UWP 在列表视图中使用增量加载集合向上和向下滚动?

问题描述

这个IncrementalLoadingCollection示例展示了如何在向下滚动时创建具有增量加载集合(无限滚动)的应用程序。

XAML:

<ListView x:Name="PeopleListView">
    <ListView.ItemTemplate>
        <DataTemplate x:DataType="local:Person">
            <TextBlock Text="{x:Bind Name}" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

C#:

public class Person
{
    public string Name { get; set; }
}

public class PeopleSource : IIncrementalSource<Person>
{
    private readonly List<Person> people;

    public PeopleSource()
    {
        // Populate people
        ...
    }
    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);
    }
}    

var collection = new IncrementalLoadingCollection<PeopleSource, Person>();
PeopleListView.ItemsSource = collection;

在此处输入图像描述

但是我需要视图从列表中间开始显示,如果上下滚动项目应该像向下滚动时那样增量加载。有谁知道如何使用 IncrementalLoadingCollection 执行此操作,或者可以提出解决方案?感激的。

标签: c#windowsvisual-studiolistviewuwp

解决方案


但是我需要视图从列表中间开始显示,如果上下滚动,项目应该像向下滚动时那样增量加载。

我不得不说我们不能在上面实现IncrementalLoadingCollection,因为它不会从头到尾检测列表视图。您的要求可以参考我之前的回复

并且监听scrollViewer.VerticalOffset值,如果值变成0,你可以调用load more方法,然后将新的项目插入到集合的头部。请注意,加载列表视图时,您需要确保 VerticalOffset 值大于 0。这可能使列表视图可以立即向上滚动。


推荐阅读