C# 在WPF中通过按某个键从控制切换到控制

C# 在WPF中通过按某个键从控制切换到控制,c#,wpf,textbox,grid,switching,C#,Wpf,Textbox,Grid,Switching,我需要通过按enter键实现从文本框到文本框、按钮到文本框等的切换,所以我想知道是否有一些简单的方法可以做到这一点,比如它是WIN表单,更改属性,如优先级1、2、3、4,当用户按enter键时,控件将按数字从低到高进行切换 在wpf中,我找不到那个解决方案,但我找到了这个,所以我想知道它可以吗 这是我的密码: private void Grid_PreviewKeyDown_1(object sender, KeyEventArgs e) { try

我需要通过按enter键实现从文本框到文本框、按钮到文本框等的切换,所以我想知道是否有一些简单的方法可以做到这一点,比如它是WIN表单,更改属性,如优先级1、2、3、4,当用户按enter键时,控件将按数字从低到高进行切换

在wpf中,我找不到那个解决方案,但我找到了这个,所以我想知道它可以吗

这是我的密码:

private void Grid_PreviewKeyDown_1(object sender, KeyEventArgs e)
        {
            try
            {
                if (e.Key == Key.Enter)
                {
                    TextBox s = e.Source as TextBox;
                    if (s != null)
                    {
                        s.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
                    }
                    else
                    {
                        ComboBox cb = e.Source as ComboBox;
                        if (cb != null)
                        {
                            cb.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
                        }
                        else
                        {
                            Button b = e.Source as Button;
                            if (b != null)
                            {
                                b.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
                            }
                        }
                    }

                    e.Handled = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
我的控件包含在网格中

谢谢各位
干杯

由于
网格
的所有子元素共享相同的基类(
UIElement
),您应该能够稍微简化代码:

private void Grid_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        UIElement element = e.Source as UIElement;
        element.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
    }
}

这是可行的,但不是从上到下随意切换控件,而是在我的控件上随机上下跳跃?您可以通过设置控件的TabIndex属性来控制顺序: