解释输入标签WPF

Ars*_*yan 20 wpf keyboard-input

我想在整个我的WPF应用程序中将Enter键解释为Tab键,也就是说,当我的应用程序中的任何地方用户按Enter时我想要聚焦下一个可聚焦控件,除非按钮被聚焦.在应用程序生命周期中有没有办法做到这一点?谁能举个例子?
非常感谢!

Mat*_*ton 37

如果您愿意,可以使用我的EnterKeyTraversal附加属性代码.将它添加到WPF窗口的顶级容器中,内部的所有内容都将输入为tab:

<StackPanel my:EnterKeyTraversal.IsEnabled="True">
    ...
</StackPanel>
Run Code Online (Sandbox Code Playgroud)


Ric*_*rre 8

根据 Richard Aguirre 的答案,它比所选答案的易用性更好,恕我直言,您可以通过简单地将 Grid 更改为 UIElement 来使其更通用。

要在整个项目中更改它,您需要执行此操作

  • 在 App.xaml.cs 中:

     protected override void OnStartup(StartupEventArgs e)
     {           
         EventManager.RegisterClassHandler(typeof(UIElement), UIElement.PreviewKeyDownEvent, new KeyEventHandler(Grid_PreviewKeyDown));
         base.OnStartup(e);
     }
    
     private void Grid_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
     {
         var uie = e.OriginalSource as UIElement;
    
         if (e.Key == Key.Enter)
         {
             e.Handled = true;
             uie.MoveFocus(
             new TraversalRequest(
             FocusNavigationDirection.Next));
         }
     }
    
    Run Code Online (Sandbox Code Playgroud)
  • 编译。并做到了。现在您可以使用类似选项卡的输入。注意:这适用于网格中的元素