0

次の状況があります:SortIdプロパティでソートする必要があるアイテムのリストを取得します。

IComparable<T>ItemViewModels にインターフェイスを実装したので、プロパティで使用Comparer.Defaultして、ICollectionView.CustomSortリフレクションを使用せずに並べ替えを適用できます (PropertySortDescriptionそうです)。

さて、私の問題は、アイテムがSortIdコレクションに表示される順序で単純にソートされる必要があるため、アイテムにプロパティが設定されていないことがあることです。ただし、項目の数によっては順番が逆になったり、完全に混ざって表示されたりすることもあるようです。

この動作を回避する方法はありますか? 並べ替えを適用しない場合、アイテムは正しい順序で表示されます。ただし、アイテムのプロパティに応じて、並べ替えを動的にオンまたはオフにする必要がSortIdあります-これはまったく好きではありません...他のアイデアはありますか?

4

1 に答える 1

1

メソッドの実装を更新することで、CompareToSortId が定義されていないオブジェクトの並べ替え順序を保証できます

例えば

    public class MyItem : IComparable
    {
        public int? SortId { get; set; }

        public int CompareTo(object other)
        {
            if (SortId == null)
                return -1;

            MyItem otherItem = other as MyItem;
            if (otherItem == null || otherItem.SortId == null)
                return 1;

            return SortId.Value.CompareTo(otherItem.SortId.Value);
        }
    }

上記は、ソートIDのないオブジェクトが他のオブジェクトよりも小さくなることを保証します

于 2014-06-24T07:31:08.900 に答える