0

新手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列表顶部的所有内容,按字母顺序排列。然后按照字母顺序排列所有非操作。

实现这一目标的正确方法是什么?

提前谢谢了。

4

1 回答 1

1

最简单的方法是使用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();
于 2012-05-16T12:12:04.890 回答