This post originated from an RSS feed registered with .NET Buzz
by -.
Original Post: WPF: Einführung in die Routed Events
Feed Title: Norbert Eder - Living .NET
Feed URL: http://feeds.feedburner.com/NorbertEder-Livingnet
Feed Description: Copyright (c)2005, 2006 by Norbert Eder
Bisher waren Events genau einem einzigen Element zugewiesen und wurden am angehängten Eventhandler behandelt. Mit WPF wurden die so genannten Routed Events eingeführt, welche sich je nach Strategie durch den WPF Elementbaum bewegen. Insgesamt gibt es drei unterschiedliche Arten dieser Weiterleitungen
Bubbling
Tunneling
Direkt
Bubbling
Zuerst wird der Eventhandler der Quelle aufgerufen. Wird also bein Button geklickt wird der direkt angehängte Eventhandler aufgerufen. Anschließend wird das Event an alle Elternelemente weitergereicht, bis das Wurzelelement erreicht ist.
Tunneling
Der Eventhandler des Wurzelelements wird als erstes aufgerufen. Dieser gibt das Event anschließend an alle Kinder weiter, bis der Auslöser erreicht wird.
Direkt
Die direkte Event-Strategie entspricht der Funktionsweise, wie wir sie bis dato gewohnt waren. D.h. nur das Element selbst erhält das Event.
Warum routed Events
Als Entwickler ist es nicht immer notwendig zu wissen, welche Strategie nun für das Event implementiert wurde, da spezielles Verhalten entsprechend versteckt wurde. Notwendig wird das Wissen um routed Events bei der Erstellung von eigenen Steuerlementen usw.
Listener und Quellen von routed Events müssen kein eigenes Event in ihrer Hierarchie teilen. Jedes UIElement bzw. ContentElement kann ein Listener sein. Vielmehr agieren die routed Events als "Interface" worüber Informationen ausgetauscht werden können.
Ebenfalls ist es möglich, über den Elementbaum hinweg zu kommunizieren, da die Event-Daten an jedes Element im Baum weitergereicht werden und somit für alle sichtbar sind. So kann beispielsweise ein Element die Daten verändern, worauf ein anderes Element entsprechend reagieren kann.
Weitere Informationen
Weitere Informationen können über das MSDN bezogen werden. Ein guter Einstiegspunkt findet sich im Artikel Routed Events Overview.