Caliburn.Micro检测文本框,使用修饰符输入

问题描述 投票:0回答:1

我有启用了AcceptsReturn的文本框。我想在按Shift + Enter后插入新行。文本框XAML如下所示:

...
AcceptsReturn="True"
cal:Message.Attach="[Event KeyDown] = [Action HandleInput($eventArgs)]"

HandleInput方法:

public void HandleInput(KeyEventArgs keyArgs)
 {
  if (keyArgs.Key == Key.Enter && Keyboard.Modifiers != ModifierKeys.Shift)
   { ...

当我只按Enter时,它应该用输入来做点什么,但每次都会插入新行。

c# wpf textbox caliburn.micro
1个回答
0
投票

这是因为KeyDown使用事件冒泡,这意味着该事件首先在控件上引发,然后在其父控件上引发,然后是该父控件的父控件,直到该事件被处理为止。

当将AcceptsReturn设置为true时,TextBox控件将处理enter击键,因此该事件不会“冒泡”到HandleInput方法。

您可以改用PreviewKeyDown使用事件隧道,这与事件冒泡相反。

© www.soinside.com 2019 - 2024. All rights reserved.