2012-01-18 15 views
3

私はこれらのルーティングされたイベント、依存関係のプロパティ、および添付されたイベントに出くわしたWPFの概念を理解しています。 私はそれらの背後にある概念と、なぜそれらが.net由来のメソッドの代わりに呼び出されたのか理解できないと思いますか?ルーティングされたイベントとアタッチされたイベントの違いと、それらの違いは何ですか?

答えて

8

ルーテッドイベントは、要素ツリーのさまざまなコントロールがイベントに反応する機能を提供します。例えば

、我々はButtonを含むStackPanelを含むWindowを持っていると、誰かがボタン上でマウスキーを押した場合、イベントがこの順に発行されます。

PreviewMouseDown on Window 
PreviewMouseDown on StackPanel 
PreviewMouseDown on Button 
MouseDown on Button 
MouseDown on StackPanel 
MouseDown on Window 

これらの「プレビュー」イベントの使用Tunnelingと呼ばれる動作。通常のイベントBubbleが再びアップします。

EventArgsHandledプロパティをtrueに設定すると、トンネリングとバブリングが停止します。トンネリングまたはバブリングは、ルーティング戦略と呼ばれます。

これは、例えば、さまざまな状況を処理できます

  • はイベントマウスダウンを受け取るためのStackPanelの子要素を防止することができます。 (Handled~trueStackPanel.PreviewMouseDownに設定)。私は、これは絶対に必要になる刚性Attached Eventsに見ていない助言する(Window.KeyDown

を他のコントロールによって処理されていないウィンドウ上のキーが押されたときの処理

  • 。添付されたイベントのシナリオは非常に限定されています。添付されたイベントは、ルーティングされたイベントでもあります。

  • 関連する問題