最近項目中一直在和PagedCollectionView這個類打交道。通過它,我們可以以分頁的形式自動處理并顯示集合中的片段,尤其是和Pager控件配合的時候更能彰顯其威力。
PagedColectionView類實作了ICollectionView接口,是以除分頁外,它也同時提供了的其他一些對集合操作非常有用功能,如
Sorting 排序
Filtering 過濾
Grouping 分組
我們用一個簡單的DataGrid示範這些功能。
首先建立一個超簡單的實體類
<a href="http://11011.net/software/vspaste"></a>
接着構造一個List<Person>
然後後建立一個PagedCollectionView的新執行個體,并以上面建立的Person集合作為其構造函數的參數:
現在讓我們看一下如何通過PagedCollectionView簡單的針對集合進行排序
ICollectionView接口定義了一個SortDescriptions集合,用以設定視圖的排序規則,比如:要讓我們的Person集合先按照年齡(Age)正序排列再按照全名(FullName)倒序排列,我們可以通過添加兩個SortDescription對象來完成這個需求:
F5運作後:
<a href="http://www.024hi.com/Images/cnblogs/04ab0f126a1f_F833/image.png"></a>
ICollectionView同時也提供了分組功能。和排序一樣,我們隻需添加GroupDescription對象到GroupDescription中即可。目前GroupDescription隻提供實作一種分組方式--即通過屬性名分組(PropertyGroupDescription)。
我們實體類中加入一個Gender屬性辨別性别
<a href="http://www.024hi.com/Images/cnblogs/04ab0f126a1f_F833/image_3.png"></a>
最後要介紹的就是PagedCollectionView通過實作ICollectionView接口提供的任意篩選的能力。
用于篩選的Filter屬性為Predicate<object>類型,是以我們可以簡單的通過Lambda表達式進行集合項的篩選,比如我們要篩選集合中屬性Gender為“男”的Person:
運作後效果如下
<a href="http://www.024hi.com/Images/cnblogs/04ab0f126a1f_F833/image_4.png"></a>
夠酷夠友善吧。
至于分頁及處理以及和Pager控件配合顯示頁碼等的相關文章已經很多了,需要了解的兄弟可以在園子裡搜搜。
have fun~
本文轉自紫色永恒51CTO部落格,原文連結:http://www.cnblogs.com/024hi/archive/2009/12/04/1617108.html ,如需轉載請自行聯系原作者