分组视图

当数据项数量较大的时候,为了让用户能够快速找到要查看的项,应该对数据进行分组。ItemsControl控件公开GroupStyle属性,用来设置分组视图的样式,它是一个GroupStyle对象列表,列表中的每个GroupStyle对象代表一个层次的分组。如果列表中只有一个GroupStyle对象,则表示分组视图只呈现顶层分组;如果列表中有两个GroupStyle对象,则分组视图将呈现两个层次的分组。一般来说,只需要一层分组就可以了,分组层次过多会导致应用程序界面混乱,对用户体验造成负面影响。

GroupStyle所设置的分组样式的目标类型为GroupItem,GroupItem是内容控件,派生自ContentControl,作用是在集合控件中显示分组视图,每个GroupItem实例将呈现一个组的数据。有关GroupStyle类的各个属性的详细信息参考如下:

  • HeaderTemplate 定义用于显示分组标头内容的数据模板,即如何显示每个分组的组标题
  • HeaderContainerStyle 定义组标头的容器控件的样式
  • ContainerStyle 定义GroupItem控件的样式
  • Panel 指定一个面板,用于排列每个分组视图

要实现分组视图,还需用到ColelctionViewSource类,该类可以对数据集合进行管理,尤其是支持数据分组,通过Source属性来引用原始数据列表。如果原始的数据列表已经进行过分组,应当将IsSourceGrouped属性设置为true。通常,原始数据可以使用Linq技术进行分组,并把分组结果赋值给Source属性。

CollectionViewSource类的View属性将返回一个实现了ICollectionView接口的对象实例,但该实现类并没有对外公开,开发者无法在代码中访问它,不过可以使用ICollectionView接口来访问。当数据视图分组后,IColelctionView的CollectionGroups将返回一个对象列表,其中每个对象表示一个分组的视图对象,该对象的类型实现了ICollectionViewGroup接口。同理,ICollectionViewGroup接口的实现类也没有对外公开,开发者只能通过ICollectionViewGroup接口来访问该对象。

ICollectionViewGroup接口的Group属性就是数据的分组依据,假设数据是按首字母进行分组的,那么Group属性的值就是标识该分组的单个字母。GroupItems属性返回的是属于该分组的数据项列表。

接下来将通过一个示例来演示数据视图分组功能。

本例假设有一个数据列表,表示一系列新闻纪录,并将数据列表按新闻分类进行分组(如社会新闻、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值