【问题标题】:Caliburn.Micro detect textbox enter with modifierCaliburn.Micro 检测带有修饰符的文本框输入
【发布时间】:2020-01-11 22:40:49
【问题描述】:

我有启用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】:

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

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

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

    【讨论】:

    • 完美运行。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-12-22
    • 2015-01-16
    • 1970-01-01
    • 2011-09-03
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多