我在我的XAML代码中定义了一个键绑定:
<KeyBinding Command="{Binding CopyCommand}" Modifiers="Control" Key="C" />
如果我按CTRL+C
,则不会调用CopyCommand
。如果我使用以下代码:
<KeyBinding Command="{Binding CopyCommand}" Modifiers="Control" Key="U" />
并按CTRL+U
命令正常。
我认为这样做的原因是,CTRL+C
在其他地方处理,Handled
的{{1}}值设置为true,因此它无法控制。
我是否有可能为此/任何特定活动找到所有消费者?我可以以某种方式调试/跟踪事件从创建之时直到它被消耗?
简单地搜索KeyDown处理程序并不是一个真正的选择。
我甚至可以使用外部软件,例如像Snoop之类的东西,但更喜欢使用Visual Studio 2012或编写代码的解决方案。
答案 0 :(得分:0)
使用Snoop我可以看到CTRL+U
由UserControl(StructurePanelV)处理,而CTRL+C
由StructurePanelView内的Devexpress` TreeListControl处理。
因为TLC处理PreviewKeyDown-但是KeyBinding
侦听KeyDown事件CTRL+C
不起作用(对于事件的顺序,请查看本文https://wpf.2000things.com/2012/08/07/619-event-sequence-for-the-key-updown-events/ )。
似乎没有可能将XAML-KeyBinding定义为PreviewKeybinding。
Laganimal提供的链接工作正常,因为它也在PreviewKeyDown事件上注册。