单元格在wpf数据网格中失去焦点后仍保持编辑模式
本文关键字:模式 编辑 焦点 失去 wpf 数据 数据网 网格 单元格 | 更新日期: 2023-09-27 18:01:14
我有一个DataGrid,其中有两列,即Name
和Group
。
我已经使用了 此外,基于某些条件,我使用InputBindings将新行添加到ViewModel中的DataGrid中。 但是,当添加新行时,我可以看到在添加新行之前聚焦的最后一个单元格仍处于编辑模式。 这是我创建的一个示例项目,用来清楚地解释我的问题。EnterKeyTravarsal
类,所以我可以使用Enter作为TAB
更新您的类EnterKeyTraversal
static void ue_PreviewKeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
var ue = e.OriginalSource as FrameworkElement;
DataGrid dg = FindVisualParent<DataGrid>(ue) as DataGrid;
DataGridCell cell = FindVisualParent<DataGridCell>(ue);
if (e.Key == Key.Enter)
{
//e.Handled = true;
if (dg != null)
{
dg.CommitEdit();
}
if (cell != null)
{
cell.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
else
{
ue.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
if (dg != null)
{
dg.BeginEdit();
}
}
}
我没有时间下载您的所有代码,但我会尽力提供帮助。
我记得我也遇到过类似的问题,我用任一
this.grid.CommitEdit();
或
this.grid.CommitEdit(DataGridEditingUnit.Row, true);
在您的情况下,您可能需要使用"DataGridEditingUnit.Cell">
我在插入新行之前调用了这些方法,但我记得我在让它们工作时遇到了很多问题,最终没有正确理解它们(尽管它们工作得很好(,对不起:S
编辑:公共DataGrid 代码
public DataGrid MyGrid
{
get
{
return this.grid;
}
}