[英]Sorting an ObservableCollection<BusinessObject> using a custom sort order
[英]Sorting ObservableCollection Using Custom Logic
WPF
和ObservableCollection
新功能,我需要以自己的方式对其进行排序,并在每次添加或删除它时保持其排序。
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.