【问题标题】:How to implement Incremental loading in MasterDetailsView?如何在 MasterDetailsView 中实现增量加载?
【发布时间】:2017-05-12 10:30:22
【问题描述】:

我想在MasterDetailsView 中实现增量加载。我知道我们可以使用ISupportIncremental​Loading 实现增量加载。但是一个问题是我没有同时拥有ObservableCollection 中的所有项目。只有当用户到达MasterDetailsView.ItemTemplate 的末尾时,才会添加ObservableCollection 中的项目。

我已经创建了一个函数来在ObservableCollection 中加载更多项目,但我只想在用户到达MasterDetailsView.ItemTemplate 的末尾时调用该函数。

那我该怎么做呢?

【问题讨论】:

  • 可能类似于分页?绑定滚动事件,当它到达该特定项目的末尾时,只需加载另一个。
  • @m.rogalski 如何绑定滚动事件?可以用代码解释一下吗?
  • 我没有做过,但据我所知,MasterDetailsView 包含一个 ListView 作为每个项目的占位符。在 ListView 中,您应该有一个名为 VerticalOffset 的属性。
  • 我的错,在 ListView 中,您必须首先获得可能的 ScrollViewer :GetDescendants(<NameOfListView>).OfType<ScrollViewer>().FirstOrDefault(),这将具有 VerticalOffset 属性。
  • @m.rogalski 能用代码详细解释一下吗?我从未使用过 VerticalOffset 属性

标签: c# xaml uwp windows-community-toolkit


【解决方案1】:

我们可以用Incremental Loading Collection实现增量加载

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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 2020-07-27
    • 2020-04-02
    • 2012-09-08
    • 2019-05-11
    • 1970-01-01
    相关资源
    最近更新 更多