【问题标题】:Prevent auto change row on enter key pressed in DataGrid防止在 DataGrid 中按下回车键时自动更改行
【发布时间】:2014-07-09 20:39:03
【问题描述】:

我在 WPF 中有一个 DataGrid,如下所示:

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

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

我想防止在编辑文本框后按回车键时自动选择发生变化,因此在编辑第一行文本框内容时不会移动到第二行,右侧的标签将在某些条件后更新,例如:如果文本仅包含数字字符,则文本正常,否则出错。

我该怎么做?

我尝试通过使用我的视图 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);
    }

【问题讨论】:

    标签: c# wpf datagrid wpf-controls


    【解决方案1】:

    试试这个改变。

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

    【讨论】:

    • 这样可以防止自动移动到下一行,也可以防止右边的标签被更新,
    猜你喜欢
    • 2015-12-18
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    相关资源
    最近更新 更多