2

モデルとしてエンティティ フレームワークを使用する 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 のコンテキストが削除されて再作成されたときに、データグリッドの並べ替えを維持するにはどうすればよいですか。

前もって感謝します

4

1 に答える 1