2009-06-12 6 views
12

SortViewをソートするためのSortDescriptionsを持つCollectionViewSourceから派生したコレクションをソートしようとしています。残念なことに私は独自のカスタムIComparerを使用できる必要がありますが、その方法を見つけることはできません。データグリッドを考えて、自分のマルチカラムソートアルゴリズムを持っています。 CollectionViewSourceと私の真のデータソースの間の追加レイヤーであるCollectionChangedを実装したコレクションを使用する方法があると思っていますが、誰かが何か提案をしていれば、より良い方法を好むでしょう。カスタムIComparerを使用してCollectionViewSourceを並べ替える

答えて

13

Bea Stollnitzには、カスタムソート例hereがあります。

この記事の要点は、ICollectionまたはIEnumerableインターフェイスではなく、IList実装にCollectionViewSourceをバインドすることです。これにより、プロパティはCollectionViewの代わりにListCollectionViewインスタンスを返します。 ListCollectionView.CustomSortを使用して、IComparerを割り当てて、カスタムソートを行うことができます。さらに簡単にするには、Comparer<T>.Createメソッドを使用して、クラス全体ではなくComparison代理人を使用することもできます。

+1

この記事の要点は、 'CollectionViewSource'をより弱い' ICollection'または 'IEnumerable'インターフェースではなく' IList'実装にバインドすることです。これにより、 'View'プロパティは' CollectionView'の代わりに 'ListCollectionView'インスタンスを返します。次に、 'ListCollectionView.CustomSort'を使ってカスタムソートを行うための' IComparer'を割り当てます。簡単にするために、[Comparer .Create'](http://msdn.microsoft.com/en-gb/library/hh737198.aspx)メソッドを使用して、代わりに 'Comparison'デリゲートを使用することもできますクラス全体。 – ygoe

関連する問題