モデルとしてエンティティ フレームワークを使用する MVVM ライトで構築された wpf アプリケーションがあります。
バックグラウンド:
ビュー モデルには、ビューにデータグリッドを設定するために使用するコンテキストがあります。表示されるビュー/ビューモデルを変更する「ナビゲーション サービス」を作成しました。このナビゲーション サービスの一部として、要求されたビューがユーザーに表示される前に、ビューモデルがビューモデル内のデータグリッドのレコードを更新するために使用するイベントをトリガーします。
問題:
ユーザーが列見出しをクリックしてデータグリッドを並べ替えた場合、レコードを更新するとその並べ替えは失われます。コンテキストをドロップして再作成するときに、データグリッドのスローティングを維持したいと考えています。
例:
これは、ビュー モデルのレコード更新機能の簡略化されたバージョンです。
Context = Nothing
Context = _ModelService.NewContext
InStockCollection = Await _TrackingService.GetTracking_Stock_AllAsync(Context)
InStockCollectionViewSource.Source = InStockCollection
ペアビューでのデータグリッドの宣言は次のとおりです。
<DataGrid x:Name="StockDataGrid"
Grid.Column="1" Grid.Row="4" Grid.ColumnSpan="3"
ItemsSource="{Binding InStockCollectionViewSource.View, IsAsync=True}"
CanUserAddRows="False"
CanUserDeleteRows="False"
SelectionMode="Single"
SelectedItem="{Binding SelectedInStock, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
VirtualizingStackPanel.IsVirtualizing="True"
RowHeight="49">
質問:
ビューモデルでdatagirdの現在のソートされた値をキャプチャするにはどうすればよいですか(コードのcollectionviewsourceにソートの説明を追加するのは快適ですが、どのソートが現在適用されているかを知る方法がわかりません)
また
または、collectionviewsource のコンテキストが削除されて再作成されたときに、データグリッドの並べ替えを維持するにはどうすればよいですか。
前もって感謝します