2011-10-12 72 views
0

我正在处理WPF DataGrid。当我开始编辑新行时,我需要它显示新项目的空行。我想要这样做,因为有时用户只是在没有完成行的信息的情况下单击数据网格之外。DataGrid不显示新项目的行

我试过的一个解决方案是在网格失去焦点时提交行更改,但事件有点不对,因为它失去了对内部任何控件的焦点。

如何在数据网格失去焦点时提交行更改?

谢谢!

+0

在WPF数据网格中,新行被添加到项目源中,如果我们按回车不是吗? –

+0

是的,但如果我专注于网格以外的控件,该行仍处于编辑模式。所以,如果用户想要插入一个新行,他将不得不在编辑模式下单击该行,按回车键,然后关注新行。这是很多步骤要弄清楚的。 –

+0

在某些情况下,基于诚实聚焦的WPF数据网格提交可能会令人恼火。如果进行预先验证的验证,它们会变得有点不合理。我记得回到使用“Enter”方法。这是很容易管理的。 –

回答

0

你可以看看this answer。细节是不同的,但基本上,它设置了一个行为,当DataGrid失去焦点时提交更改。我能够调整这一点来解决我遇到的问题。

1

我希望下面的代码会有所帮助。

private void grdEmp_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) 
    { 
     if (!isManualEditCommit) 
     { 
      isManualEditCommit = true; 
      DataGrid grid = (DataGrid)sender; 
      grid.CommitEdit(DataGridEditingUnit.Row, true); 
      isManualEditCommit = false; 
     } 
    }