質問: DataGridにて、通常であれば行の単位でセルに入力した内容がコミットされますが、 これを、「CommitEdit」を使用して、フォーカスアウトしたときに強制的にコミットさせようとしておりました。 しかし、「CommitEdit」のロジックを通ると、頭の処理に戻り、 また、「CommitEdit」のロジックを通りで無限ループに陥ってしまいます。 上記の流れをコミット→次の処理に進ませることは可能なのでしょうか? ``` private void kpDetaGrid_check3(object sender, DataGridRowEditEndingEventArgs e) { dataGrid.CommitEdit(DataGridEditingUnit.Row, true); MessageBox.Show("コミット"); } ``` ``` ```
回答: kpDataGrid_check3がXamlから見つからないのですがどこから呼び出しているのでしょうか。 DataGridRowEditEndingEventArgsを使用していることからRowEditEndingイベントだと思いますが合ってますか? RowEditEndingイベントは行の編集をコミットまたはキャンセルする前に発生するイベントです。 つまりコミット/キャンセルする→イベント発生→コード内のコミット実行→イベント発生が繰り返し起こり、無限ループしてしまいます。 質問文にはフォーカスアウトしたときと書いてあるのにわざわざコミット/キャンセル前のイベントを使う理由がわからないのですが どうしてもこのイベントで実行しなければならない理由があるのでしょうか。 理由がなければ別のイベントで実行することをお勧めします。