C# 如何实现ListView项的增量加载?
我正在制作一个UWP应用程序。我有一个绑定到ObservableCollection的ListView。 我想知道什么时候到达ListView的末尾。一旦到达ListView的末尾,我必须进行API调用以向列表中添加更多数据 在ListView的末尾,我的意思是用户已经一直向下滚动,我必须进行api调用,以便将更多数据输入ListView,以便用户可以进一步滚动C# 如何实现ListView项的增量加载?,c#,xaml,uwp,C#,Xaml,Uwp,我正在制作一个UWP应用程序。我有一个绑定到ObservableCollection的ListView。 我想知道什么时候到达ListView的末尾。一旦到达ListView的末尾,我必须进行API调用以向列表中添加更多数据 在ListView的末尾,我的意思是用户已经一直向下滚动,我必须进行api调用,以便将更多数据输入ListView,以便用户可以进一步滚动 如何确定用户何时一直向下滚动?在UWP社区工具包中,有一个名为的UWP ListView控件的特殊版本,其功能与您想要的功能非常接近:
如何确定用户何时一直向下滚动?在UWP社区工具包中,有一个名为的UWP ListView控件的特殊版本,其功能与您想要的功能非常接近: 当用户下拉到列表末尾之外时,将触发
RefreshRequested
事件-这是添加新项目的地方
我建议您去Windows应用商店下载,看看这个控件的演示,并从一个代码示例开始。在UWP社区工具包中,有一个名为的UWP ListView控件的特殊版本,它的功能与您想要的非常接近: 当用户下拉到列表末尾之外时,将触发
RefreshRequested
事件-这是添加新项目的地方
我建议您到Windows应用商店下载,看看这个控件的演示,并从一个代码示例开始。在UWP社区工具包中使用
using Microsoft.Toolkit.Uwp;
public class Person
{
public string Name { get; set; }
}
public class PeopleSource : IIncrementalSource<Person>
{
private readonly List<Person> people;
public async Task<IEnumerable<InfoOverView>> GetPagedItemsAsync(int pageIndex, int pageSize, CancellationToken cancellationToken = default(CancellationToken))
{
return AddItems();
}
public void AddItems()
{
people.Clear();
//Code to add the additional items in the people List
return people;
}
}
//In Page.xaml.cs
public Page()
{
this.InitializeComponent();
var collection = new IncrementalLoadingCollection<PeopleSource, Person>();
MasterDetailsViewPanel.ItemsSource = collection;
}
使用Microsoft.Toolkit.Uwp;
公共阶层人士
{
公共字符串名称{get;set;}
}
公共类人员来源:IIncrementalSource
{
私人只读列表人员;
公共异步任务GetPagedItemsAsync(int-pageIndex、int-pageSize、CancellationToken CancellationToken=default(CancellationToken))
{
返回AddItems();
}
公共无效附加项()
{
人。清除();
//用于在人员列表中添加其他项目的代码
还人,;
}
}
//在Page.xaml.cs中
公共网页()
{
this.InitializeComponent();
var collection=new IncrementalLoadingCollection();
MasterDetailsViewPanel.ItemsSource=集合;
}
在UWP社区工具包中使用
using Microsoft.Toolkit.Uwp;
public class Person
{
public string Name { get; set; }
}
public class PeopleSource : IIncrementalSource<Person>
{
private readonly List<Person> people;
public async Task<IEnumerable<InfoOverView>> GetPagedItemsAsync(int pageIndex, int pageSize, CancellationToken cancellationToken = default(CancellationToken))
{
return AddItems();
}
public void AddItems()
{
people.Clear();
//Code to add the additional items in the people List
return people;
}
}
//In Page.xaml.cs
public Page()
{
this.InitializeComponent();
var collection = new IncrementalLoadingCollection<PeopleSource, Person>();
MasterDetailsViewPanel.ItemsSource = collection;
}
使用Microsoft.Toolkit.Uwp;
公共阶层人士
{
公共字符串名称{get;set;}
}
公共类人员来源:IIncrementalSource
{
私人只读列表人员;
公共异步任务GetPagedItemsAsync(int-pageIndex、int-pageSize、CancellationToken CancellationToken=default(CancellationToken))
{
返回AddItems();
}
公共无效附加项()
{
人。清除();
//用于在人员列表中添加其他项目的代码
还人,;
}
}
//在Page.xaml.cs中
公共网页()
{
this.InitializeComponent();
var collection=new IncrementalLoadingCollection();
MasterDetailsViewPanel.ItemsSource=集合;
}
请改进您的问题,向我们展示一些代码,并让我们知道您遇到困难的代码部分。你认为什么是代码?ListVIEW的结尾达到了< /代码>?用户一直向下滚动?还是您的代码填充完ListView了?@blaze_125补充到问题中。代码没什么大不了的,只有一个ListView,它从一个ObservableCollection中获取项目。请查看此开始->它不是UWP特定的,但它可能会帮助您开始。请改进您的问题,向我们展示一些代码,并让我们知道您在代码的哪一部分遇到困难。你认为什么是代码?ListVIEW的结尾达到了< /代码>?用户一直向下滚动?还是您的代码填充完ListView了?@blaze_125补充到问题中。代码没什么大不了的,只有一个ListView,它从一个ObservableCollection中获取项目。请查看此开始->它不是UWP特定的,但它可能会帮助您开始。您应该推荐您应该推荐的