c# - 如何使用 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 执行此操作,或者可以提出解决方案?感激的。
解决方案
但是我需要视图从列表中间开始显示,如果上下滚动,项目应该像向下滚动时那样增量加载。
我不得不说我们不能在上面实现IncrementalLoadingCollection
,因为它不会从头到尾检测列表视图。您的要求可以参考我之前的回复。
并且监听scrollViewer.VerticalOffset
值,如果值变成0,你可以调用load more方法,然后将新的项目插入到集合的头部。请注意,加载列表视图时,您需要确保 VerticalOffset 值大于 0。这可能使列表视图可以立即向上滚动。
推荐阅读
- node.js - 猫鼬转换 & 到 &
- css - 如何将 box-shadow 更改为 css 中的类似命令?
- r - R dplyr:过滤数据框以获取列唯一值的向量
- javascript - 在本机反应中添加谷歌登录库时出错
- mysql - 如何删除触发器内的一行?
- typescript - create-react-app Typescript 3.5,路径别名
- containers - 容器 vs 无服务器 vs 虚拟机
- c++ - 如何修改静态成员函数中的变量?
- scala - Play Framework - 在 Web 套接字响应头中编辑 Sec-WebSocket-Protocol
- android - ArrayList 在 RecyclerView 中添加数据时跳过一些数据