我有启用了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
,它使用事件隧道,与事件冒泡相反。