阻止在DataGrid中按下的输入键上的自动更改行

时间:2014-05-21 09:29:33

标签: c# wpf datagrid wpf-controls

我在WPF中的DataGrid看起来如下:

DataGrod rows

上面的DataGrid行代表以下示例模型:

    class MyModel
    {
        public string Value { get; set; }
        public string Message { get; set; }
    }

我希望在编辑文本框后按Enter键时阻止自动选择更改,因此在编辑第一行文本框内容时,不会移动到第二行,右边的标签将在以下条件之后更新:如果文本仅包含数字字符,则文本正常,否则出错。

我该怎么做?

我尝试通过使用我的视图KeyPressed,PreviewKeyDown和LostFocus事件后面的代码来执行此操作,但它不起作用:(

    if (e.Key == Key.Enter || e.Key == Key.Return)
    {
        var dataGrid = (DataGrid) sender;
        if (dataGrid != null)
        {
            var row = dataGrid.ItemContainerGenerator.ContainerFromItem(dataGrid.SelectedItem) as DataGridRow;
            base.OnPreviewKeyDown(e);
            //e.Handled = true;
            if (row != null)
                dataGrid.SelectedItem = row.Item;
        }
    else
        base.OnPreviewKeyDown(e);
    }

1 个答案:

答案 0 :(得分:2)

尝试此更改。

//base.OnPreviewKeyDown(e);
e.Handled = true;