원하는대로 작동하는 WPF DataGrid가 있지만 각 행에 두 개의 셀을 편집 할 수 있습니다. 행을 편집 할 때이 두 행을 모두 편집 모드로 놓은 다음 행 편집이 끝나거나 행이 포커스를 잃을 때 업데이트를 실행 할 수 있습니까? 현재 각 셀을 편집 한 후 RowEditEnding이 실행되고 사용자는 커밋 후 UI가 다시 그리기를 기다려야합니다. 내가 사용하는 코드는 다음과 같습니다WPF DataGrid 전체 행 편집
private bool isManualEditCommit;
private void dg_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
if(e.EditAction!= DataGridEditAction.Commit)
return;
var newProd = dgLists.SelectedItem as IProduct;
if(newProd==null)
return;
worker = new BackgroundWorker();
worker.DoWork += (s, dwe) =>
{
... commit update
};
worker.RunWorkerCompleted += (s, rwe) =>
{
... refresh grid
};
worker.RunWorkerAsync();
}
/// <summary>
/// Commits edits when a cell edit ends.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.Windows.Controls.DataGridCellEditEndingEventArgs"/> instance containing the event data.</param>
private void dg_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) {
if (e.EditAction == DataGridEditAction.Commit)
{
if (!isManualEditCommit)
{
isManualEditCommit = true;
DataGrid grid = (DataGrid) sender;
grid.CommitEdit(DataGridEditingUnit.Row, true);
isManualEditCommit = false;
}
}
그러나 모든 셀이 편집 모드로 들어 가지는 않습니다. 각 셀은 포커스를 받으면 CellEditingTemplate을 표시하지만 그 행의 나머지 셀에는 편집 할 수없는 표준 컨트롤이 있습니다. – Echilon