Language)は構造を入れ子で定義できます。以下のような構造のXAMLがあったとします。</Grid>Gridコントロールの下にCanvasがあるというあまり意味の無い構造ですが、仕組みを理解するサンプルということでご勘弁を。上記を実行すると以下のように左上にボタンが一つある画面が表示されます。XAMLの入れ子構造はドキュメントアウトラインで確認できます。イベントの伝播(Bubbling)イベントの中でも特殊なイベントRoutedEventがあります。RoutedEventには以下の種類があります。KeyDownKeyUpGotFocusLostFocusPointerPressedPointerReleasedPointerCanceledPointerEnteredPointerExitedPointerMovedPointerCaptureLostPointerWheelChangedHoldingTappedDoubleTappedRightTappedDragEnterDragLeaveDragOverDropManipulationStartingManipulationStartedManipulationInertiaStartingManipulationDeltaManipulationCompletedこれらのイベントはバブリングという動作をします。実際に動作を見てみましょう。上記XAMLのコードビハインドに以下のイベントが定義されています。}呼び出されるとイベントハンドラーは自分の名前をコンソールに出力します。(イベントのクラスがTappedRoutedEventArgsとRoutedEventとなっていることにも注目してください)このサンプルでボタンがクリックされた場合どのような出力が得られるか実行してみます。Button3_TappedCanvas2_TappedParentGrid_Tappedこの出力は上から順にイベントハンドラーを呼び出された並びです。XAMLコントロールの入れ子でいうと最下層のボタンのタップイベントが発生した後、イベントは上位のキャンバス、さらに上のグリッドにイベントが伝播していることがわかります。この動きは、RoutedEventの伝播を理解していないと予期しない動作をもたらすことになります。イベントの伝播を行わないようにするにはコードビハインドを以下のように書き換えます。}e.Handledをtrueに設定することでイベントの伝播は止まります。プログラムを実行すると以下の出力が得られます。Button3_TappedCanvas2_Tappedイベントの伝播が止まりました。コメントをキャンセルメールアドレスが公開されることはありません。付いている欄は必須項目ですCommentName*Email*Website古代魚庵という屋号でフリーランスのプログラマー兼ライター業をやっています。