質問
私はaを実装しました UserControl
. 。それから私は最初に処理されたイベントを処理したいと思います Window
(キーボードプレス)。別のコンポーネント(コンポーネントのツリーで高い)でキャッチされたイベントをルーティングする最良の方法は何ですか?
返信とヒントを前もってありがとう!
乾杯
解決
アクセスしようとしているイベントに依存します。プレビューイベントであり、ウィンドウがe.handled e.handled e.handled of trueに設定されている場合、アレックスはウィンドウのトンネルの取り扱いを回避するために提案する方法を使用する必要があります。バブルイベントの場合(つまり、キーダウン)、バブルイベントが最初に子要素のハンドラーにヒットし、視覚ツリーを上って、UCの後までウィンドウハンドラーが発生しないため、特別なことをする必要はありません。
重要なイベントを使用することに注意する必要があることの1つは、イベントが最初にUCが焦点を当てている場合、またはその中にある場合にのみ、UCによって取り上げられることです。これは、木の特定の場所から始まるので、マウスイベントのようなもので心配する必要があるものではありません。
他のヒント
私はあなたがそれをグルンティーをすることはできないと信じています。Window
クラスはWin32メッセージベースのイベントモデルをラッピングしており、これがそれらの情報にアクセスできる唯一のWPFエンティティになります。
添付のプロパティを作成することをお勧めします( Window
)コントロールがサブスクライブできるように、イベントのルーティングを自分で実装します。
処理されたメッセージを処理することを指定して、ルーティングされたハンドラーを添付できます。
this.AddHandler(routedEvent, handler, true);
どこ this
uielementまたは派生クラスです。
ただし、まだイベント(この場合はキープレス)があり、窓を通り過ぎてはいけませんが、確かではありません。