0

MVVM パターンを使用する wpf アプリケーションに dataGrid があります。

列名をクリックすると dataGrid で行を並べ替えることができ、シフト キーを使用すると多くの列で並べ替えることができます。したがって、コントロールは私が必要とするすべてを提供します。

ただし、行を並べ替えて新しい要素を追加すると、新しい要素はビューモデルの監視可能なコレクションの最後の要素として実際に追加されますが、dataGrid では、この要素の位置に表示されます。ソート基準に。

したがって、ビュー モデルで新しい要素を選択しようとします。observalbeCollection の最後の要素のインデックスを取得しますが、これは DataGrid 内の正しくない要素、表示されている最後の要素を選択しますが、これは新しい要素ではありません。

この投稿では、1 つの解決策は CollectionViewSource を使用することのようですが、私が間違っていなければ、この場合、要素を並べ替えるすべてのコードをビュー モデルに実装する必要があるため、dataGrid がこの作業を行うときのコードが増えます。

これは、要素をソートする責任を本当に持っているのは誰ですか? ビューモデルまたはビュー?ビューモデルにソートを実装する場合、ビューモデルは、列名をクリックして要素をソートするデータグリッドが存在することを知る必要があるためです。要素の並べ替えは視覚的なものだと思うので、ビューモデルはその作業を行う必要はありませんが、おそらく間違っています。

どうすればこの問題を解決できますか?

4

1 に答える 1

1

(MVVM を使用して) WPF の任意のコレクション コントロールにデータを配置する場合、コントロールの種類に応じて、コレクション プロパティと または プロパティにItemsSource常にバインドSelectedItemします。SelectedItemsSelectionMode

これにより、どのアイテムが選択されいるかを確認し、ビュー モデルから選択する (データ) アイテムを選択できます。

ユーザーが設定した順序DataGridが重要な場合は、ビュー モデルから並べ替えを実行しますが、ユーザーが作業しているときにのみ重要な場合は、順序を無視できます...覚えておいてください。ビュー モデルのバインドされたSelectedItemプロパティを介して、選択した項目にアクセスします。

于 2013-07-19T15:54:53.910 に答える