如何将按键事件转发到用户控件中的文本框?

时间:2018-08-01 11:21:36

标签: c# wpf keydown routed-events keyboard-input

我们有一个带有两个列表和一个文本框的用户控件。我们的产品管理部门要求用户可以输入文本,而不考虑当前的焦点。另外,一些按键(上,下,左,右,返回,移动和控制)应由列表框处​​理,以进行导航和多重选择。

我为PreviewKeyDown添加了事件处理程序。在项目之间以及列表和文本框之间导航正常。但是我没有找到任何有用的提示来提示如何将键事件委托给文本框。

我尝试使用RaiseEvent方法:

this.NameTextBox.RaiseEvent(
     new KeyEventArgs(Keyboard.PrimaryDevice,
                      PresentationSource.FromVisual(target),
                      0,
                      key)
          { RoutedEvent=Keyboard.PreviousKeyDownEvent});

PreviousKeyDownEvent被触发但未处理。 RaiseEvent对于除Back键之外的所有键均返回false

我也试图获取钥匙的角色。但这对于德语键盘上的“é”等组合键不是有用的解决方案,因为它需要两个键。

我猜想RaiseEvent是解决方案,但是我不知道如何“告诉”文本框来处理事件。

有什么主意吗?

0 个答案:

没有答案