1

我有几个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 );
            }
        }
    }
}
4

1 回答 1

3

每列都有IsReadOnly属性,所以只需检查

if (!grid.CurrentCell.Column.IsReadOnly)
于 2013-09-19T20:04:00.910 回答