通过按某个键在 WPF 中从控件切换到控件

Switching from control to control in WPF by pressing some key

我需要通过按回车键实现从文本框到文本框、按钮到文本框等的切换,所以我想知道是否有一些简单的方法可以做到这一点,比如 WIN FORM,将 属性 更改为优先级 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);
            }

我的控件包含在网格中。

谢谢大家 干杯!

由于 Grid 的所有子元素共享相同的基础 class (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));
    }
}