2017-02-02 5 views
-1

私は私のXAMLコードでキーバインドを定義した:イベントに従うか、すべてのコンシューマを見つけるには?

<KeyBinding Command="{Binding CopyCommand}" Modifiers="Control" Key="C" /> 

私はCTRL+Cを押すと、CopyCommandが呼び出されません。私が次の代わりに:

​​

を押して、CTRL+Uを押すと、コマンドはうまく動作します。 これは、CTRL+Cが別の場所で処理され、KeyEventArgsHandledの値がtrueに設定されているため、自分のコントロールに到達しないと考えています。

私はこの/任意のイベントですべての消費者を見つける可能性はありますか?イベントが作成されてから消費されるまで何らかの形でデバッグ/フォローできますか?

KeyDownハンドラを検索するだけでは、実際にはオプションではありません。

私は外部のソフトウェアを使用しても問題ありません。 Snoopのようなものですが、Visual Studio 2012を使用するソリューションやコードを書くことをお勧めします。

+0

私はあなたがそうすることはできないと思っていますが、イベントはバブルアップ*することで、ウィンドウの子(おそらく 'KeyBinding')を所有している可能性が高いです。どのようなコントロールがキーボードのフォーカスを持っていますか? –

+2

このトピックを見てみることをお勧めします。http://stackoverflow.com/a/12943306/7486915 –

答えて

0

スヌープを使用してCTRL+UがUserControl(StructurePanelV)で処理され、CTRL+CがStructurePanelView内のDevexpress` TreeListControlによって処理されることがわかりました。

enter image description here

TLCはPreviewKeyDown-を処理しますが、KeyDownイベント、イベントCTRL+CKeyBindingリッスンは動作しませんので(イベントの順序については、この記事https://wpf.2000things.com/2012/08/07/619-event-sequence-for-the-key-updown-events/を見てください)。

XAML-KeyBindingをPreviewKeybindingとして定義することはできないようです。

Laganimalが提供するリンクは、PreviewKeyDownイベントにも登録されているため、うまく動作します。

関連する問題