如何关注活动或找到所有消费者?

时间:2017-02-02 18:27:02

标签: c# visual-studio events visual-studio-2012

我在我的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或编写代码的解决方案。

1 个答案:

答案 0 :(得分:0)

使用Snoop我可以看到CTRL+U由UserControl(StructurePanelV)处理,而CTRL+C由StructurePanelView内的Devexpress` TreeListControl处理。

enter image description here

因为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事件上注册。