【问题标题】:KeyBinding gesture "Ctrl+1" in RichTextBox doesn't workRichTextBox 中的 KeyBinding 手势“Ctrl+1”不起作用
【发布时间】:2010-11-17 00:51:00
【问题描述】:

在 WPF 中将命令绑定到 Ctrl+N 手势时有一个奇怪的区别。这些手势中的一些但不是全部都被忽略了,其余的都可以。有没有其他人偶然遇到过这种行为?

Window XAML 结构非常简单:命令绑定、输入绑定,以及带有 Menu 和 RichTextBox 的 DockPanel。经测试,只有输入焦点在RichTextBox时才会出现问题。

对于测试,为所有数字键定义了窗口输入绑定,如下所示。 结果,Ctrl+1Ctrl+2Ctrl+5 不会做任何事情,而 Ctrl+3 46-90 工作正常。 Alt+1Alt+2 也可以正常工作。

 <Window.InputBindings>
  <KeyBinding Command="me:MainWindow.MyRC" Gesture="CTRL+0" />
  <KeyBinding Command="me:MainWindow.MyRC" Gesture="CTRL+1" />
  ...
  <KeyBinding Command="me:MainWindow.MyRC" Gesture="CTRL+9" />
 </Window.InputBindings>

问题原因

正如 Andy 所指出的,RichTextBox 已经将一些手势绑定到内部命令。在 RTB 中处理此手势时,它不会传递到窗口级别。当击键对 RTB 中的文本没有明显影响时,这有点难以检测。

解决方案 1

如果命令仅在 RTB 上下文中有意义 - 移动其中的输入绑定以覆盖默认命令绑定:

<RichTextBox.InputBindings>
    <KeyBinding Command="me:WindowBindingTest.MyRC1" Gesture="CTRL+1" />
    <KeyBinding Command="me:WindowBindingTest.MyRC2" Gesture="CTRL+2" />
    <KeyBinding Command="me:WindowBindingTest.MyRC5" Gesture="CTRL+5" />
</RichTextBox.InputBindings>

解决方案 2

如果命令具有“更大范围”并且即使输入焦点在 RTB 之外也应该可用 - 从未使用的默认 RTB 命令中删除手势绑定:

<RichTextBox.InputBindings>
    <KeyBinding Command="NotACommand" Gesture="CTRL+1" />
    <KeyBinding Command="NotACommand" Gesture="CTRL+2" />
    <KeyBinding Command="NotACommand" Gesture="CTRL+5" />
</RichTextBox.InputBindings>

【问题讨论】:

    标签: wpf richtextbox


    【解决方案1】:

    看起来RichTextBox 已经使用 Ctrl+1(“ApplySingleSpace”)定义了一个命令绑定。因此它可能会处理命令而不是让它路由到窗口。

    您可以通过将InputBinding 添加到RichTextBox 来解决此问题,但是由于您还需要在Window 上使用它以供其他控件成为焦点,所以这不是一个很好的解决方案.

    【讨论】:

    • 谢谢安迪。不知道网上有没有很好的RTB命令和绑定参考?
    • @DK 很遗憾,我没有。 :( 我发现这一点的唯一方法是在测试应用程序上使用 Snoop,看看当我按下 Ctrl+1 时触发了什么命令。
    • @Andy,您如何在 Snoop 中找到针对特定输入手势触发的命令?
    • @TomasKarban 如果您在 Snoop 中找到有问题的控件,请转到“事件”选项卡,并确保选择了用于执行命令的事件。转到您的应用并按下输入手势 - 您应该会在 Snoop 的事件列表中看到相应的命令。
    猜你喜欢
    • 1970-01-01
    • 2011-09-22
    • 2012-10-29
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多