列表ListBox、ListView、GridView 排序
2017-09-10 21:05
155 查看
列表排序
1.使用控件默认排序方式(推荐)
2.使用CollectionView排序
2.自定义SortableObservableCollection
添加列表属性,并绑定到控件
在排序触发时,添加
viewModel.Items.Sort(item => item.UpdateTime, sortingDirection);
1.使用控件默认排序方式(推荐)
ListControl.Items.SortDescriptions.Clear(); ListControl.Items.SortDescriptions.Add(new SortDescription("IsGroup", ListSortDirection.Descending)); ListControl.Items.SortDescriptions.Add(new SortDescription(_sortingField?? "UpdateTime", _sortingDirection)); ListControl.Items.Refresh();
2.使用CollectionView排序
var collectionView = CollectionViewSource.GetDefaultView(ListControl.ItemsSource); if (collectionView != null) { collectionView.SortDescriptions.Clear(); collectionView.SortDescriptions.Add(new SortDescription("IsGroup", ListSortDirection.Descending)); collectionView.SortDescriptions.Add(new SortDescription(_sortingField, sortingDirection)); collectionView.Refresh(); }
2.自定义SortableObservableCollection
public class SortableObservableCollection<T> : ObservableCollection<T> { public SortableObservableCollection() { } public SortableObservableCollection(List<T> list) : base(list) { } public SortableObservableCollection(IEnumerable<T> collection) : base(collection) { } public void Sort<TKey>(Func<T, TKey> keySelector, System.ComponentModel.ListSortDirection direction) { switch (direction) { case System.ComponentModel.ListSortDirection.Ascending: { ApplySort(Items.OrderBy(keySelector)); break; } case System.ComponentModel.ListSortDirection.Descending: { ApplySort(Items.OrderByDescending(keySelector)); break; } } } public void Sort<TKey>(Func<T, TKey> keySelector, IComparer<TKey> comparer) { ApplySort(Items.OrderBy(keySelector, comparer)); } private void ApplySort(IEnumerable<T> sortedItems) { var sortedItemsList = sortedItems.ToList(); foreach (var item in sortedItemsList) { Move(IndexOf(item), sortedItemsList.IndexOf(item)); } } }
添加列表属性,并绑定到控件
public SortableObservableCollection<CoursewareListItem> Items { get { return _items; } set { _items = value; RaisePropertyChanged("Items"); } }
在排序触发时,添加
viewModel.Items.Sort(item => item.UpdateTime, sortingDirection);
相关文章推荐
- GridView 列表绑定,分页,排序,全选,反选,查看,编辑,删除,批量删除
- win8中ListView、GridView、ListBox如何更改Item的背景色、间距之类等?
- 为ListView添加自动列宽调整和点击列表头自动排序功能
- 用ListView和GridView实现的,第一个item默认选中的二级列表
- Android 仿联系人列表 实现ListView的A-Z字母排序和过滤搜索功能
- Android 列表使用(ListView GridView Gallery图片计时滚动)
- 为ListView添加自动列宽调整和点击列表头自动排序功能
- C#为ListView添加自动列宽调整和点击列表头自动排序功能
- ListView,GridView等列表控件中CountDownTimer的应用
- ScrollView下嵌套多个列表视图如(ListView、Gridview等)引发的一系列问题及解决办法
- C#:ListView控件如何实现点击列表头进行排序?
- gridview、listview适配器布局中带有checkbox实现的列表 checkbox只能有一项选中
- C#:ListView控件如何实现点击列表头进行排序
- 如何去掉ListView/GridView等列表控件滑到顶部或底部时的模糊边缘效果
- Android联系人列表,实现ListView的A-Z字母排序和过滤搜索功能,字母条目上顶
- 二十六、ItemsControl、ListBox、ListView、GridView和FlipView控件
- Android 仿联系人列表 实现ListView的A-Z字母排序和过滤搜索功能,并挤压效果
- Android 列表使用(ListView GridView Gallery图片计时滚动)
- ListBox, ListView, GridView
- 实现单击列表头对ListView的动态排序