У меня есть таблица данных WPF, которая работает для того, что я хочу, но в каждой строке есть две ячейки, которые можно редактировать. Можно ли перевести обе эти строки в режим редактирования при редактировании строки, а затем запустить обновление, когда редактирование строки заканчивается / строка теряет фокус? В настоящее время после редактирования каждой ячейки запускается RowEditEnding, и пользователь должен дождаться перерисовки пользовательского интерфейса после фиксации. Код, который я использую:
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;
}
}