多くは、ブログの庭の記事、この研究の参照のための順番にそれらのいずれかのルーティングイベントを説明します。
https://www.cnblogs.com/zhili/p/WPFRouteEvent.html
その後、どのように我々は実際の使用でそれをバブリングルーティングイベントを使用することができ、記事が記載されてインターネットバブルの上に流通しているが、彼らは千倍ですか?
< グリッド×:名= "GridRoot" 背景= "ライム" Button.Click = "Button_Clickは" > < グリッド×:名= "GridA" マージン= "10" 背景= "青" Button.Click = "Button_Clickを" > < Grid.ColumnDefinitions > < ColumnDefinition > </ ColumnDefinition > < ColumnDefinition > </ ColumnDefinition > </ Grid.ColumnDefinitions > < キャンバスのx:名前= "CanvasLeft" Grid.Column= "0" の背景= "赤" マージン= "10" > < ボタンのx:名= "ButtonLeft" 幅= "65" 高さ= "100" マージン= "10" コンテンツ= "左" Button.Click = "Button_Click " > </ ボタン> </ キャンバス> < キャンバスX:名=" CanvasRight " Grid.Column = "1" 背景= "黄" マージン= "10" Button.Click ="Button_Click」 > < ボタンのx:名= "ButtonRight"幅= "65" 高さ= "100" マージン= "10" コンテンツ= "右" Button.Click = "Button_Click" > </ ボタン> </ キャンバス> </ グリッド>
コードのように:
1.イベントバブルは、転送から「裏返し」ではなく、すべてのノードは、イベントが要求されます。キャンバスとしてノードはButton.Click =「Button_Click」ではありません。
2.各ノードは、例えばButton.Clickグリッドノードのため=「Button_Click」は、Button.Click =「Button_Click0000」に変更することができるイベントハンドラButton_Click0000処理ロジックはButton_Click異なる場合があり、必ずしも同じ事象ではありません。
3.ルーティングイベントシナリオアプリケーション1バブリング:あなたが自分で新しい制御型AAを定義する必要がある場合は、AAテンプレートは、コントロールのlableが含まれているが、今回のAAが「トリガー」イベントをクリックしていませんが、そこlableクリックイベント、あなたは、クリックすると、その後、「トリガー」イベントをすることができるようになりますAA、AAのコントロールへの追加イベントとしてイベントのlableをクリックすることができます。(ルートイベントが実際にイベントハンドラにイベントへの「リスニング」は、外観ではなく、実行されます、「聞く」、制御ノードによって実行される「衝撃の髪を、」ここで言っ理解しやすいだけトリガーです)
次のコードを考えてみます。
AA VSカスタムコントロールを使用して、次のように生成されるデフォルトのコードは次のとおりです。
パブリック クラスAA:コントロール { 静的AA() { DefaultStyleKeyProperty.OverrideMetadata(typeof演算(AA)、新しい FrameworkPropertyMetadata(typeof演算(AA)))。 } }
1 < スタイルTargetTypeに= " {X:タイプローカル:AA} " > 2 < セッタープロパティ="テンプレート" > 3 < Setter.Value > 4 < たControlTemplate TargetTypeに= " {X:タイプローカル:AA} " > 5 < ボーダー背景= " {TemplateBindingの背景} " 6 BorderBrush =" {TemplateBindingのBorderBrush} " 7 BorderThickness =」{TemplateBindingのBorderThickness} " > 8 < ラベルコンテンツ=" 123" 背景= " {TemplateBindingの背景} " > </ 商品> 9 </ ボーダー> 10 </ のControlTemplate > 11 </ Setter.Value > 12 </ セッター> 13 </ スタイル>
そのコードプラス8の線、および他のコードに加えて、自動的に生成されます。AAカスタマイズ何も内部統制、と私は内側にlableを置きます。ここに行くにはAAのmouseDownイベントのlableですので、あなたがAA、AA背景色の変更をクリックしたとき。
< グリッド×:名= "GridRoot" 背景= "ライム" Button.Click = "Button_Click1" > < ローカル:AA X:名= "AA" Label.MouseDown = "Button_Click" 背景= "グリーン" > </ ローカル。 AA > </ グリッド>
プライベート 無効 Button_Click(オブジェクト送信者、RoutedEventArgs e)の { この .aa.Background = Brushes.Red。 }
あなたがクリックするとAAの背景が緑から赤に変わります。
これは非常に単純なコード、イベントのバブリングのシナリオの記録された1つです。