在添加新项目后立即将空白行添加到WPF DataGrid

时间:2018-07-06 11:14:05

标签: c# wpf datagrid

DataGrid的默认行为是,当我单击空白行(也称为NewItemPlaceholder)时,然后添加新行,并且空白行消失,直到我选择另一行。我使用 DataGrid.InitializingNewItem 事件为新行设置初始值,以便新项目填充所有列。我具有复杂的单元格内容,并且编辑单元格不会为我创建新的空白行。但是我仍然必须选择另一行才能显示空白行。我试图以编程方式选择其他行,但无济于事。

添加新项目后,有什么方法可以显示空白行吗?

PS:当我删除所有行并使用空白行创建新行时,此行为也会带来问题。然后我没有其他行可供选择,空白行将永远消失。

PSS:还有一个类似的问题,其中 CODE IMAGES ,但没有答案unofficial documentation here

1 个答案:

答案 0 :(得分:0)

您还可以使用 e.NewItem 属性在 InitializingNewItem 回调方法中对新项目进行成形,以便在提交编辑时获得正确的项目。

InitializingNewItem 首先由 BeginningEdit 事件触发。 请注意,要使NewItemPlaceholder出现,您还应该将DataGrid绑定到具有可声明的默认构造函数的可编辑集合,并将 DataGrid.CanUserAddRows 属性设置为true。

private bool _justCreatedNewItem;
dataGrid.BeginningEdit += (o, e) =>
{
  if (_justCreatedNewItem)
  {
     dataGrid.CommitEdit(DataGridEditingUnit.Row, true);
     _justCreatedNewItem = false;
  }
};
dataGrid.InitializingNewItem += (o, e) => { _justCreatedNewItem = true; };