繁体   English   中英

uwp 限制 AdvancedCollectionView 中的项目数

[英]uwp limit the number of items in AdvancedCollectionView

我有两个来自 windows 社区工具包的高级集合视图,它们都绑定到具有不同过滤器和排序的同一个 ObservableCollection,基本上在其中一个中我只需要显示最近和有限数量的项目。 我怎样才能做到这一点?

PeoplePrivate = new ObservableCollection<Person>();

        var People = new AdvancedCollectionView(PeoplePrivate, true) { Filter = x => true };
        People.SortDescriptions.Add(new SortDescription(nameof(Person.Name), SortDirection.Ascending));

        var RecentPeople = new AdvancedCollectionView(PeoplePrivate, true) { Filter = x => true };
        RecentPeople.SortDescriptions.Add(new SortDescription(nameof(Person.Modified), SortDirection.Descending));

正如你在上面的代码中看到的那样,recentPeople 应该只根据修改日期显示最近的 20 个人。 似乎没有任何属性可以在 advancedCollection 视图上设置最大大小或执行诸如“Take(20)”之类的操作。

我试图通过首先使用 Take(20) 创建一个 IEnumerable 来返回一个新的高级集合,但这看起来不正确,因为我需要将它链接到同一个 ObservableCollection。

查看或执行诸如“Take(20)”之类的操作我尝试通过首先使用 Take(20) 创建一个 IEnumeralbe 来返回一个新的高级集合

目前AdvancedCollectionView没有提供这个方法来获取最近的数量项。 但是您可以删除除源的前 20 项之外的所有项目。

public static class AdvancedCollectionViewEx
{
    public static void GetTopRang(this AdvancedCollectionView acv, int Range)
    {
        do
        {
            var LastIndex = acv.Source.Count - 1;
            acv.Source.RemoveAt(LastIndex);

        } while (acv.Source.Count > Range);
    }
}

用法

RecentPeople.GetTopRang(20);

我喜欢这里提供的 WPF 答案,并使用绑定转换器在集合视图绑定到 ListView 时截断它的最终结果。 那么它应该在集合更改并重新过滤时更新吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM