WPFのルーティングイベントの概要

多くは、ブログの庭の記事、この研究の参照のための順番にそれらのいずれかのルーティングイベントを説明します。

 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つです。

 

おすすめ

転載: www.cnblogs.com/qcst123/p/11967573.html