我有几个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 );
}
}
}
}
答案 0 :(得分:3)
每列都有IsReadOnly
属性,所以请检查
if (!grid.CurrentCell.Column.IsReadOnly)