CollectionViewSource实现数据分组、排序、过滤等功能

[toc]
我们通常以List、ObservableCollection等集合作为数据源,但如果需要实现数据分组、排序、过滤等功能可以采用CollectionViewSource

初始化:

list为数据源

CollectionViewSource viewSrc = new CollectionViewSource(list);

或者

CollectionViewSource viewSrc = new CollectionViewSource();
viewSrc.Source = list;

分组

以属性RoleType来进行分组

viewSrc.GroupDescriptions.Add(new PropertyGroupDescription("RoleType")); //以属性RoleType来进行分组

过滤

viewSrc.Filter += ViewSrcOnFileter;
private void ViewSrcOnFileter(object sender, FilterEventArgs e)
{
    var data = e.Item as ChatUserInfo; // ChatUserInfo是作为CollectionViewSource数据源的集合的类型。
    e.Accepted = true;//赋值true表示接受改数据项在集合中显示,false就表示该数据项不在集合中显示。
}

viewSrc.Source = list; // list 是 List<ChatUserInfo>

视图刷新

viewSrc.View.Refresh();

绑定Binding

绑定时以viewSrc.View作为数据源。

其他问题

设置CollectionViewSource作为数据源的控件默认会选中列表第一项,可以通过设置 IsSynchronizedWithCurrentItem="False" 来解决默认选中第一项的问题。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容