Caliburn.Micro detect 文本框输入与修饰符



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

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

句柄输入方法:

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

当我只按 Enter 时,它应该通过输入进行一些操作,但它每次都会插入新行。

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

AcceptsReturn设置为 true 时,TextBox 控件将处理输入键击,以便事件不会"冒泡"到 HandleInput 方法。

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

相关内容

  • 没有找到相关文章

最新更新