列表排序
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);
时间: 2024-10-29 00:33:18