WPF DataGrid创建新行TabStop

时间:2017-03-08 16:37:13

标签: c# .net wpf datagrid wpfdatagrid

我有一个CanGserAddRows =“True”的DataGrid。我的桌子有多列;用户可以编辑单元格并按Tab键跳转到下一个单元格。当您在最后一列时,Tab将带您到下一行。

但是,如果您正在编辑新行,当您在最后一列选项卡时,焦点将在创建新行之前跳转到窗口中的下一个控件。

我需要关注的是跳转到DataGrid中新创建的行。老实说,我不知道从哪里开始攻击这个问题。

编辑:我应该澄清新行的第一列是应该获得焦点的那一行(想象一下有人用键盘填充网格,使用标签)。

1 个答案:

答案 0 :(得分:1)

您可以处理PreviewKeyDown DataGrid事件,以拦截TAB按键并以编程方式按ENTER键:

<DataGrid x:Name="dg" ... PreviewKeyDown="dg_PreviewKeyDown" />
private void dg_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Tab)
    {
        e.Handled = true;

        var key = Key.Enter;
        var target = Keyboard.FocusedElement;
        var routedEvent = Keyboard.KeyDownEvent;

        dg.RaiseEvent(new KeyEventArgs(Keyboard.PrimaryDevice, PresentationSource.FromVisual(dg), 0, key)
        {
            RoutedEvent = routedEvent
        });
    }
}