3

私はMVVMアプローチを使用しています。

AllSomethingViewModel と AllSomethingView という ViewModel と View があります。ビュー モデルには、SomethingViewModels と SelectedViewModel のリストが含まれています。ビューには、AllSomethingViewModel の SelectedVM プロパティにバインドされたユーザー コントロールと、VM を選択できるリストボックス コントロールが含まれています。基本的に、新しい VM を選択すると、usercontrol の DataContext が変更されるため、SomethingViewModel に関連付けられたビューが新しい情報で更新されます。

SomethingViewModel には、ObservableCollection(DataPoints) データと呼ばれるオブジェクトのリストが含まれています。

データにバインドされた DataGrid と、データのメンバーにバインドされた列が定義されています。これはうまくいきます。ビューを変更すると、このデータグリッドが更新され、すべてがうまくいきます。

私が直面している問題は、データ コンテキストが変更されたときに、データ グリッドに適用される並べ替えを保持したいということです。

SomethingViewModel に関連付けられたビューでは、DataContextChanged イベントをサブスクライブできますが、並べ替えを適用するためにそこから何をすべきかわかりません。

例えば。私は2つのSomethingViewModelsを持っています。したがって、私のリストには2つのオプションがあります。最初のものを選択すると、データを含むデータグリッドが取得されます。データグリッドで、DateCreated の昇順で並べ替えることにしました。次に、2 番目の VM に移動します。データ コンテキストが変更されるため、グリッド内のデータは更新されますが、並べ替えられなくなります。

4

1 に答える 1

1

並べ替えが DataGrid によって行われる場合は、DataGrid がデータを表示するために使用する ICollectionView に格納されます。

ICollectionView view = CollectionViewSource.GetDefaultView(myDataGrid.ItemsSource);
// Sorting is found in view.SortDescriptions

ここにコードで並べ替えを設定する例があります。それがあなたを正しい方向に導くのに十分であることを願っています

于 2010-09-07T15:29:37.310 に答える