繁体   English   中英

使用自定义逻辑对ObservableCollection进行排序

[英]Sorting ObservableCollection Using Custom Logic

WPFObservableCollection新功能,我需要以自己的方式对其进行排序,并在每次添加或删除它时保持其排序。

ObservableCollection<User> users = new ObservableCollection<User>();

用户对象如下所示:

class User
{
    public string Name { get; set; }
    public bool IsOp { get; set; }
    public bool IsAway { get; set; }
}

我希望所有IsOp's都按字母顺序位于列表的顶部。 然后,所有非操作对象都按字母顺序排列。

实现此目的的正确方法是什么?

提前谢谢了。

最简单的方法是使用CollectionView

ICollectionView view = CollectionViewSource.GetDefaultView(users);
view.SortDescriptions.Add(new SortDescription("IsOp", ListSortDirection.Descending));
view.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));

当您将视图绑定到该列表时,各项将以指定顺序显示。

使用此处显示的技巧,您甚至可以使用Linq:

var query =
    from u in users.ShapeView()
    orderby u.IsOp descending, u.Name ascending
    select u;

query.Apply();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM