天天看点

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 ,如需转载请自行联系原作者

继续阅读