天天看點

Silverlight中的PagedCollectionView

最近項目中一直在和PagedCollectionView這個類打交道。通過它,我們可以以分頁的形式自動處理并顯示集合中的片段,尤其是和Pager控件配合的時候更能彰顯其威力。

PagedColectionView類實作了ICollectionView接口,是以除分頁外,它也同時提供了的其他一些對集合操作非常有用功能,如

Sorting 排序

Filtering 過濾

Grouping 分組

我們用一個簡單的DataGrid示範這些功能。

首先建立一個超簡單的實體類

<a href="http://11011.net/software/vspaste"></a>

接着構造一個List&lt;Person&gt;

然後後建立一個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&lt;object&gt;類型,是以我們可以簡單的通過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 ,如需轉載請自行聯系原作者

繼續閱讀