我有几个DataGrids
都使用通用事件处理程序:DataGrid_PreviewKeyDown
.
它的目的是查找 tab 键事件并在用户关闭最后一行的最后一个编辑单元格时插入新行。网格有几列,其中只有几列是可编辑的。
目前,我所拥有的如下所示。它使用grid.CurrentCell.Column.Header.ToString() == "myColumnHeaderName"
. myColumnHeaderName 仅适用于一个网格,因为其他网格没有该列。
private void DataGrid_PreviewKeyDown( object sender, KeyEventArgs e )
{
if ( e.Key == Key.Tab && Keyboard.Modifiers == ModifierKeys.None )
{
DataGrid grid = sender as DataGrid;
if ( grid.SelectedIndex == grid.Items.Count - 1 ) // last row
{
if ( grid.CurrentCell.Column.Header.ToString() == "myColumnName" )
{
grid.CommitEdit();
AppendToGrid( grid );
}
}
}
}