2012-01-17 9 views
1

私はDataGridを持っています。私は並べ替えの方法を最も簡単な方法で実行しようとしています。各列のヘッダーをクリックします。DataGridからItemsSourceコレクションへの並べ替えを維持する

これは、ビュー(MVVMコンテキストで)に大きな取り組んでいるが、私はあまりにも基礎となるのViewModelコレクション(ObservableCollection)をソートしたいです。ソースコレクションを実装する方法に関する提案はありますか?

+0

DataGridの並べ替えを完全に中止し、基礎となるコレクションの並べ替えに頼っていますか?私はそれをやる前に二度考えています。 –

+0

ここには、実際のデータが表示される方法から分離するように特別に設計されたクラスがあります。 http://msdn.microsoft.com/en-us/library/system.windows.data.collectionviewsource.aspx –

+0

いいえ、私はそれがビュー(DataGridのアイテム)で達成されるソートに満足しています。 ItemsSourceコレクションにも同じソートを伝播する必要があります。 –

答えて

1

グリッドをListCollectionViewにバインドし、ObservableCollectionで初期化します。グリッドはを使用します(既定の動作であるObservableCollection<T>)に基づいてICollectionViewを作成し、インスタンスにソート機能/述語を適用します。

さらに、ViewModelからMyListCollectionView.Refresh()を呼び出すたびに、ListCollectionViewの並べ替え/フィルタリングがグリッドに反映されます。

これを実行すると、ListCollectionViewのItemsコレクションを反復処理すると、グリッドの現在のフィルタ/ソート状態が正確に反映されます。

関連する問題