バブリングイベントとトンネリングイベントの正確な違いは何ですか? バブリングイベントはどこで使うべきですか?トンネリングイベントはどこで使うべきですか? ありがとうございました!バブリングイベントとトンネリングイベントの違い
答えて
WPFはイベントを処理するためのさまざまなメカニズムを提供します - これらはバブリング、トンネリング、およびダイレクトです。これらはすべて ルーテッドイベントと呼ばれます。
直接イベントが
あなたはおそらくすでに直接ルーティングイベントに使用されています。これは、項目自体が発生したイベントを処理する です。良い例である は、彼が
onClick
- 標準の WinFormsのマウスボタンのイベントを処理するでしょう。これは、GUIアイテム内でイベントが発生し、前記GUIエレメントによって が処理される場所である。イベントバブルは、今、私たちすべて1つのフォームまたは別のある泡が好き。バブリングは、イベントが要素(たとえば、
textbox
)によって処理されず、 イベントがそれを保持するUIコンテナを「バブル」するときに、 が発生します。 の例では、パネルを含むウィンドウがあり、そのパネルにはグリッドがあり、グリッド内にはテキストボックスがあることを としましょう。 イベントがテキストボックスで処理されていない場合、イベントは移動され、 グリッドレベルまで(グリッドにはテキストボックスが含まれています)、 がそのレベルで処理されずにイベントがさらに泡立ちますディスプレイに 「ツリー」(ビジュアルツリーとして知られている)を表示して、 を処理するかどうかを確認してください。このプロセスは、処理されるか、イベント が一番上の要素を "エスケープ"するまで続きます。バブリングイベントの例は、
MouseButtonDown
イベントのようなものです。またはKeydown
イベント。トンネリング
トンネリングは、バブリングの反対です。したがって、イベントの代わりに がビジュアルツリーを「上」にすると、イベントはソースと見なされる要素 に向かってビジュアルツリーを移動します。 トンネリングイベントを定義する標準のWPFの名前は、すべて「プレビュー」 (たとえば
previewdownkey
およびpreviewmousebuttondown
)で始まるということです。 "target"要素への途中でそれらをキャッチして処理できます。 この例は、グリッド内にいくつかのコントロールを持っている可能性があります。 コントロールの中に、何かの理由でグリッドに文字「t」があることを許可する 内のコントロールがないと判断したとします。
Source私がサポートしていない、または同意しない著者の意見です。スタートとして
And another StackOverflow question which is pretty much the same.
And last but not least some explanation and another tutorial.
:いくつかのデフォルトのイベントのためのWPFでの命名規則は、トンネリングおよびバブリング用<event>
ためPreview<event>
です。たとえば、KeyDownの場合は、トンネリングとバブリングがそれぞれPreviewKeyDown
とKeyDown
になります。
2つの違いは、命名規則に示されているように、トンネリングイベントはツリー内の最も高いノード(おそらくウィンドウ)から開始し、最も低い子になるということです。子どもにバブリングのイベントが始まり、再び上に行く。
このガイドでは明らかにそれを説明する必要があります http://www.codeproject.com/Articles/464926/To-bubble-or-tunnel-basic-WPF-events
- 1. IEでのバブリングイベント
- 2. WPFでのカスタムイベントのバブリングイベント?
- 3. グーグルページのインターネットエクスプローラでバブリングイベントが機能していないようです。
- 4. メインウィンドウのモーダルダイアログから発生したバブリングイベントの処理
- 5. {!!の違い!!}と{{}}
- 6. 「 '」と「'」の違い
- 7. 違いダウンケースとダウンケースの違い! Rubyで
- 8. Open GL ES - GLenumとGlintの違いとGLintとGLsizeiの違い
- 9. PythonとPandasの違いの相違点
- 10. "!"の違いと "。"オペレータ
- 11. g ++との違い
- 12. "?"の違いと "@"ビジュアルベーシック
- 13. $ @と$の違い! perl
- 14. Kafka - DefaultPartitionerとMessageKeyの違いとカスタムパーティショナーの違い
- 15. タグとロールの違い - タグとロールの違い
- 16. posix_memalignとmmapとの違い
- 17. OAuth2とOmniauthとの違い
- 18. とnewgemとの間違い
- 19. Node.jsとtomcatとの違い
- 20. BroadcastReceiverとインテントとの違い
- 21. 弱いとunsafe_unretainedの違い
- 22. ローカルRデータフレームとSparkRデータフレームとRDDとの違いと相違
- 23. 違い>と=
- 24. 違いとMVC
- 25. さまざまな要素のバブリングイベントを処理するにはどうすればよいですか?
- 26. PHPの::と - の違いは?
- 27. Bashの$ *と$ @の違い
- 28. - '' の使用の違いと ""
- 29. Scalaの&と&&の違いは?
- 30. javascriptの+ =と= +の違い
本当に良い説明、感謝+1。ところで、 "素敵なデモプロジェクト"のリンクは今や死んでいます。 – Sabuncu