編集可能なセルを含む DataGrid があります。行がフォーカスを失うと、プロパティ変更イベントが発生し、変更をエンティティ オブジェクトにコミットし、最終的にはデータベースにコミットすることで処理します。ユーザーは、データグリッドの外側を右クリックして、コンテキスト メニューから選択できます。一部のコンテキスト メニュー項目は、データグリッド内のデータに依存しています (正確には、コミットされたデータに依存しています)。ただし、問題は、DataGrid の外側で右クリックしても、DataGrid からフォーカスが削除されないことです。これは、現在の行への変更がコミットされていないことを意味します。これは、メニュー項目コマンドが画面に表示されているものとは異なるデータに作用するため、ユーザーが驚くことを意味します。これが DataGrid のしくみであることがわかりました。しかし、私はまた、ユーザーがこれを理解することは決してできないことも認識しています.
では、どうすればこれを解決できますか?右クリック時に強制的にフォーカスを失わせることはできますか? または、DataGrid に使用できる特別なプロパティがありますか?
(私はこれを見つけました: WPF DataGrid CellEditEnding - DataSet Not Updating Till Row Lost Focusにより、DataGrid は行ごとではなくセルごとにコミットされますが、ユーザーはまだ一部を失う可能性があるため、問題は解決しません。データ (ただし、行全体ではなく 1 つのセルのみ))