‫お帰りなさい｡
‫このビデオでは､ Zemoのイベントについて説明します｡
‫そして､ ルーツイベントと呼ばれるものや､ ルーツイベントと呼ばれる事象があります｡
‫そして､ 根回しイベントには､ ダイレクトイベント､ バブリングイベント､ トンネリングイベントの3種類があります｡
‫すでにダイレクトイベントを見ていますが､ あれをもう一度作ってみましょう｡
‫このボタンは､ 単にClick Meという非常に基本的なコンテンツを持ち､ クリックイベントを持つことにして､
‫ここに新しいイベントハンドラを作成します｡
‫それは結構なことです｡
‫また､ 横幅を150､ 縦幅を100とした方がいいかもしれませんね｡
‫だから､ ここはちゃんと大きなボタンになっているんです｡
‫そして､ このボタンがクリックイベントを持つようになりました｡
‫さて､ クリックイベントは直接的なイベントです｡
‫では､ ここで見てみましょう｡
‫新しいメソッドが作られたことがわかります｡
‫private void button click method object center routed event arx e.である｡
‫そのため､ このイベントを送信するオブジェクトである送信者が必要です｡
‫そして､ これが私たちのボタンそのものです｡
‫つまり､ オブジェクトボタンがこのイベントを送信し､ そのボタンを使って先に進むことができるのです｡
‫そして､ 3つのイベントがあります｡ 先ほど言ったように､ ルートイベントやルートザイベントは一般的にイベントです｡
‫次に､ ルートイベントの1つであるダイレクトイベントがあり､ これがクリックイベントです｡
‫すぐにチェックアウトします｡
‫そして､ バブリングイベントとトンネリングイベントです｡
‫では､ このコードを実行して､ ダイレクトイベントが何をするのかを見てみましょう｡
‫ところで､ もし何かを実行したいのであれば､ もちろん､ 何が起こっているかを示すために､ ここにメッセージボックスを追加する必要があります｡
‫つまり､ ボタンがクリックされたとか､ ダイレクトイベントのようなものを追加するのでしょう｡
‫だからダイレクトなイベント｡
‫では､ これをもう一度実行してみましょう｡
‫そしてボタンをクリックすると､ button was clicked directiveと表示されます｡ このディレクティブは前回のビデオでも使用しましたが､
‫ここでは何も新しいことはありません｡
‫そうですね｡
‫つまり､ このボタンは､ ここのclickプロパティによって直接呼び出されるか､ ボタンのイベントが直接呼び出されるわけです｡
‫今､ バブリングイベントというのがあります｡
‫ユーザーがボタンをクリックしたらすぐにイベントを開始するのではなく､ クリックするためにこれを解放したらすぐに開始するようにするとします｡
‫ボタンやクリックが上に行くとすぐに､ マウスボタンやマウスアップのようなものをここで使うことができるわけですが､ マウスアップというものがあります｡
‫そこで､ そのためのイベントハンドラを新規に作成します｡
‫ここで､ メッセージボックスを表示するための新しいイベントを作成します｡
‫そしてこちらは､ Mouse Button went up, was releasedと表示されます｡
‫そのため､ リリースされたときだけ､ このイベントが発生します｡
‫このボタンのマウスアップイベントが発生します｡
‫では､ もう一度､ あれを始めましょう｡
‫そして､ 左クリックでボタンをクリックします｡
‫右クリックでやっても何も起こらないのに､ 突然､ これがバブリングイベントであることに関係する何かが起こります｡
‫つまり､ マウスアップはバブリングイベントであり､ このイベントをツリー内の階層の最上位に送るということです｡
‫さて､ ここまでで「木」とは何か､ 見てきましたね｡
‫論理ツリーでビジュアルツリーを見てきました｡
‫ここでは､ ビジュアルツリーの上に乗っているわけです｡
‫そして､ ご存知のように､ ビジュアルツリーは､ この論理ツリーで見ることができるものよりもずっと多くのものを含んでいるのです｡
‫つまり､ ウィンドウとグリッドとボタンそのものだけでなく､ その間にいろいろなものがあるんですね｡
‫このボタンをクリックすると､ さまざまなツリー要素に移動します｡
‫そして､ それをグリッドに送り､ さらにウィンドウに送ります｡
‫そして､ どこにも扱われなければ､ 何も起こりません｡
‫そして､ それが今､ 私たちが見たものです｡
‫ですから､ マウスを上に押したり､ マウスボタンを離したりすると､ このように､ クリックしたまま､ ホールドしたままになってしまうのです｡
‫そして､ 一度リリースすると､ 何も起こらない｡
‫これは､ イベントがバブリングイベントであることと､ 右ボタンでは動作するが左ボタンでは動作しないため無視され､
‫バブリングしていたため私たちに捕捉されたことが関係しています｡
‫では､ それでもどう対処すればいいのでしょうか｡
‫だって今は､ まあ､ 左ボタンでは動かないけど､ 左ボタンで動くようにしたいじゃないですか｡
‫できることは､ トンネリングイベントを使うことです｡
‫バブリングイベントはビジュアルツリーを上昇し､ トンネリングイベントはビジュアルツリーを下降します｡
‫そこで､ マウスアップを使う代わりに､ プレビューマウスアップというものを使ってみることにします｡
‫このように､ ここでは複数の異なる試写会が､ たっぷりと用意されているわけです｡
‫そして､ 例えば､ マウスダウンマウスアプリのプレビューマウスの右ボタンダウン､ 右ボタンアップなどです｡
‫ということで､ 1つだけ作成します｡
‫一般的にプレビューマウスを上げると､ 動作していることが確認できます｡
‫いずれにせよ､ そのための新しいイベントハンドラを作成し､ 先に進み､
‫このメッセージボタンをここに追加して､ これはトンネルイベントになります｡
‫これがバブリングイベントで､ 今はトンネリングイベントです｡
‫さあ､ もう一度始めましょう｡
‫そして､ 私たちは今､ クリックを残しています｡
‫そして､ ご覧の通り､ 実際にマウスボタンが上がって確認しました｡
‫クリックしたまま､ 今度は離すと､ このイベントが発生するんです｡
‫今､ 左手で右のボタンも同様に動作しています｡
‫このプレビューが行うのは､ ボタンそのもの､ またはビジュアルツリーの下方向へ送ることです｡
‫だから､ すぐに発動するんです｡
‫だから､ かなりクールなんです｡
‫プレビューマウスボタンを上にして使用したい場合は､ 安全側に､ この特定の動作を使用するときとしましょう｡
‫しかし､ これはバトンに限ったことではないことも考えてください｡
‫WPFでは､ 一般的にこのようにルート化されたイベントを処理します｡
‫だから､ ここに注意して､ 正しい方法で使ってください｡
‫では､ 試しにプレビューを作成してみましょう｡
‫マウス左下
‫そして､ 新しいハンドラを作成します｡
‫そして､ 今度はプレビューマウス｡
‫書き留めるか､ 実際に書き上げるか｡
‫つまり､ さまざまな方法があることがおわかりいただけたと思います｡
‫そして､ ここでも新しいイベントハンドラを使うことにします｡
‫あとは､ それに合わせてメッセージボックスを調整するだけです｡
‫つまり､ プレビューではマウスの左ボタンを押したまま､ マウスボタンが離されなかったと言うことです｡
‫これはトンネルを掘るイベントです｡
‫その通りです｡
‫それでいいんです｡
‫そしてもう1つは､ 実はこちらがマウスの左ボタンになります｡
‫そして､ こちらはマウスの右ボタンです｡
‫マウスの右ボタンが上に行き､ トンネルを掘るようなイベントです｡
‫そして､ 先に進むと､ そこにボタンがあるのがわかります｡
‫左を押してクリックすると､ ご覧のように､ ホールドしたままでも､ ボタンを押したままでも､
‫クリックしたらすぐにトリガーされます｡
‫そして今､ 右のボタンは一度離すと発動するようになりました｡
‫このように､ イベントには複数の異なる処理方法があることがおわかりいただけたと思います｡
‫マウスをボタンの中に入れたり､ マウスをボタンの中に入れたりするイベントも扱えます｡
‫しかし､ それは後で処理することです｡
‫ルート型イベントには､ 直接ルート型イベント､ バブリングルート型イベント､ トンネリングルート型イベントの3種類があり､
‫直接ルート型イベントは､ イベント自体を処理します｡
‫g. というクリックイベントを確認しました｡
‫そして､ バブリングイベントがビジュアルツリーの上に､ トンネリングイベントがビジュアルツリーの下に送信されるのです｡