我有一个WPF数据网格,可以满足我的需要,但每行中有两个可以编辑的单元格。编辑行时是否可以将这两行都置于编辑模式,然后在行编辑结束/行失去焦点时触发更新?目前,在编辑每个单元格之后,RowEditEnding将触发,并且用户必须等待UI在提交后重绘。我正在使用的代码是:
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;
}
}
答案 0 :(得分:1)
我退出使用DataGrid进行编辑。我使用ListView然后提供然后提供GridView作为ListView.View。在GridView中,您可以使用CellTemplates创建GridViewColumns。每个GridView行的最后一列是删除该行的按钮。我支持编辑模式,而不是支持浏览和编辑模式。应用程序移动得更流畅,我没有使用DataGrid时遇到的任何麻烦。
答案 1 :(得分:0)
完整行编辑是默认功能。每个单元格编辑更新的唯一原因是您已实现了dg_cellEditEnding方法。