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
按字母顺序排列。然后按照字母顺序排列所有非操作。
实现这一目标的正确方法是什么?
非常感谢提前。
答案 0 :(得分:1)
最简单的方法是使用CollectionView
:
ICollectionView view = CollectionViewSource.GetDefaultView(users);
view.SortDescriptions.Add(new SortDescription("IsOp", ListSortDirection.Descending));
view.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
当您将视图绑定到该列表时,项目将按指定的顺序显示。
使用显示here的技巧,您甚至可以使用Linq:
var query =
from u in users.ShapeView()
orderby u.IsOp descending, u.Name ascending
select u;
query.Apply();