Welcome

首页 / 软件开发 / Silverlight / Sliverlight中PagedCollectionView的总结

Sliverlight中PagedCollectionView的总结2012-07-06 博客园 Ringgo.Yao在Sl中只要绑定到实现IEnumerable接口的集合,都会有一个默认的视图被隐式的插入到源和目标之间,这个视图存储着当前项的信息, 也支持

排序,分组,过滤,导航这些功能,这里主要总结了PagedCollectionView这个视图的几点使用。

事实上,视图会自动关联到源集合,而不是与源的目标对象关联,这样对视图的改变,就会自动在目标对象上显示出来。

下面将这几个功能分别总结一下:

排序:

主要用SortDescriptions 属性来控制视图项,基本思路是选择集合中的某个属性作为参照,再设置排序的方式,这种设置最终会被一个 SortDescription对象捕获。

用一个示例说明这个问题:

首先创建一个数据类型,这里以Photo类为例:

public class Photo { public string Name { get; set; } public DateTime date { get; set; } public int Id { get; set; } }

取得其一个数据集合:

public class Photo
{
public string Name { get; set; }
public DateTime date { get; set; }
public int Id { get; set; }
}

取得其一个数据集合:

public class Photos
{
public List<Photo> GetList()
{
var list = new List<Photo>
{
new Photo{Name="Simens",Id=1,date=Convert.ToDateTime("2010/8/10")},
new Photo{Name="Sunshine",Id=2,date=Convert.ToDateTime("2010/8/13")},
new Photo{Name="TreeInforest",Id=3,date=Convert.ToDateTime("2010/8/15")},
new Photo{Name="WaterNaturl",Id=4,date=Convert.ToDateTime("2010/8/12")},
};
return list;
}

这里我们以DataGrid为例,为了整个过程更加清晰,我们将其CanUserSortColumns属性设为False,并通过单击Button对DataGrid中的数 据进行排序设置

UI:

<data:DataGrid AutoGenerateColumns="True" Height="131" HorizontalAlignment="Left" Margin="43,75,0,0" Name="dataGrid1"
CanUserSortColumns="False" VerticalAlignment="Top" Width="289" />
<Button Content="SortByName" Height="23" HorizontalAlignment="Left" Margin="52,221,0,0" Name="SortByName" VerticalAlignment="Top"
Width="75" Click="SortByName_Click" />
<Button Content="SortByDateTime" Height="23" HorizontalAlignment="Left" Margin="141,221,0,0" Name="SortByDateTime"
VerticalAlignment="Top" Width="75" Click="SortByDateTime_Click" />