簡體   English   中英

WPF DataGrid使新行TabStop

[英]WPF DataGrid make new row TabStop

我有一個CanUserAddRows =“ True”的DataGrid。 我的表有多個列; 用戶可以編輯單元格並按Tab跳到下一個單元格。 當您位於最后一列時,Tab會將您帶到下一行。

但是,如果您正在編輯“新行”,則在最后一列上按Tab鍵時,焦點將跳至創建新行之前的窗口中的下一個控件。

我需要做的是將焦點轉移到DataGrid中新創建的行。 老實說,我不知道從哪里開始解決這個問題。

編輯:我應該澄清一下,新行的第一列是應該獲得焦點的列(想像有人用鍵盤使用制表符來填充網格)。

您可以為DataGrid處理PreviewKeyDown事件,以攔截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
        });
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM