WPF 中的分页集合视图

问题描述 投票:0回答:2

WPF 中是否有 PagedCollectionView 的实现?它存在于 Silverlight 中,但不存在于 WPF 中。

如果没有,最简单的实现方法是什么?

c# wpf pagination collectionview
2个回答
2
投票

您可以简单地从 Silverlight one 获取代码并在您的 WPF 项目中使用它。


1
投票

或者仅使用 CollectionView 类并“双重过滤”您的集合

在这里找到解决方案:自己的 CollectionView 用于分页、排序和过滤

为了方便您,我已将代码片段粘贴到此处:

        // obtenir la CollectionView 
        ICollectionView cvCollectionView = CollectionViewSource.GetDefaultView(this.Suivis);
        if (cvCollectionView == null)
            return;

        // filtrer ... exemple pour tests DI-2015-05105-0
        cvCollectionView.Filter = p_oObject => { return true; /* use your own filter */ };

        // page configuration
        int iMaxItemPerPage = 2;
        int iCurrentPage = 0;
        int iStartIndex = iCurrentPage * iMaxItemPerPage;

        // déterminer les objects "de la page"
        int iCurrentIndex = 0;
        HashSet<object> hsObjectsInPage = new HashSet<object>();
        foreach (object oObject in cvCollectionView)
        {
            // break if MaxItemCount is reached
            if (hsObjectsInPage.Count > iMaxItemPerPage)
                break;

            // add if StartIndex is reached
            if (iCurrentIndex >= iStartIndex)
                hsObjectsInPage.Add(oObject);

            // increment
            iCurrentIndex++;
        }

        // refilter
        cvCollectionView.Filter = p_oObject =>
        {
            return hsObjectsInPage.Contains(p_oObject);
        };
© www.soinside.com 2019 - 2024. All rights reserved.