2

ListCollectionView をオーバーライドして、表示に必要な項目のみを遅延読み込みします。

この ListCollectionView を DataGrid で使用して、アイテムを表示および編集しています。

これは、本来あるべきようにうまく機能します。

私の問題: ユーザーがヘッダー列をクリックして DataGrid をソートできるようにしたい。必要な場合にのみ項目を遅延読み込みするため、ListCollectionView は、まだ読み込まれていない項目の並べ替えに失敗します。

これを解決する 1 つの方法は、すべてのアイテムをロードすることですが、かなりの時間内にロードするにはアイテムが多すぎる可能性があるため、私はそうしたくありません。

代わりに、通知を受け取り、(リモート) データ ソースに事前に並べ替えられたアイテムを渡すように伝えたいと思います。

DataGrid または (より良い) ListCollectionView のいずれかで並べ替えを傍受し、自分で行う簡単な方法はありますか?

4

1 に答える 1

0

データの仮想化が必要な場合は、このための特別なライブラリがcodeplexにあります。必要なのは、次のメソッドを実装することだけです。

public IList<T> LoadRange(int startIndex, int count, 
                SortDescriptionCollection sortDescriptions, out int overallCount)

このメソッド内で、WCF サービスを呼び出して、ソートおよび切り捨てられたリストを返すことができます。このライブラリを理解するのは簡単ではありませんが、機能します。

于 2010-12-09T17:53:34.493 に答える