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 に答える