您的位置:首页 > 其它

列表ListBox、ListView、GridView 排序

2017-09-10 21:05 155 查看
列表排序

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐