2009-05-03 8 views

Antwort

12

Geroutete Ereignisse haben ein spezielles Verhalten, aber dieses Verhalten ist weitgehend unsichtbar, wenn Sie ein Ereignis auf dem Element behandeln, auf dem es ausgelöst wird.

Wenn Routing-Ereignisse leistungsfähig werden, verwenden Sie eines der vorgeschlagenen Szenarios: Definieren von allgemeinen Handlern in einem gemeinsamen Stamm, Erstellen eines eigenen Steuerelements oder Definieren einer eigenen benutzerdefinierten Steuerklasse.

Routingereignis-Listener und Routingereignisquellen müssen kein gemeinsames Ereignis in ihrer Hierarchie gemeinsam nutzen. Any UIElement oder ContentElement kann ein Ereignis-Listener für jedes Routingereignis sein. Daher können Sie den gesamten Satz von Routingereignissen, die im gesamten Arbeits-API-Set verfügbar sind, als konzeptionelle "Schnittstelle" verwenden, wobei unterschiedliche Elemente in der Anwendung Ereignisinformationen austauschen können. Dieses "Interface" -Konzept für Routingereignisse ist insbesondere für Eingangsereignisse anwendbar.

Geroutete Ereignisse können auch für die Kommunikation über den Elementbaum verwendet werden, da die Ereignisdaten für das Ereignis für jedes Element in der Route verewigt werden. Ein Element könnte etwas in den Ereignisdaten ändern, und diese Änderung wäre für das nächste Element in der Route verfügbar.

Neben dem Routingaspekt gibt es zwei weitere Gründe, warum ein beliebiges WPF-Ereignis möglicherweise als Routingereignis anstelle eines Standard-CLR-Ereignisses implementiert wird. Wenn Sie Ihre eigenen Veranstaltungen implementieren, können Sie auch diese Grundsätze berücksichtigen:

  • Bestimmte WPF Styling und Templating Features wie EventSetter und EventTrigger das referenzierte Ereignis erfordern ein Routingereignis zu sein. Dies ist das zuvor erwähnte Ereignisbezeichner-Szenario.
  • Geroutete Ereignisse unterstützen einen Klassenbehandlungsmechanismus, mit dem die Klasse statische Methoden angeben kann, die die Möglichkeit haben, geroutete Ereignisse zu verarbeiten, bevor registrierte Instanzhandler darauf zugreifen können. Dies ist im Steuerelementdesign sehr nützlich, da Ihre Klasse ereignisgesteuerte Klassenverhalten erzwingen kann, die nicht versehentlich durch die Behandlung eines Ereignisses in einer Instanz unterdrückt werden können.

Quelle: MSDN: Routed Events Overview

+0

Jahedbozorgan: Vielen Dank für Ihre sehr umfassende Antwort. Ich bemerke, dass Sie eine Quelle in der Antwort erwähnt haben. Aber ich habe mich gefragt, ob es andere Bücher gibt, die ausführlich über RoutedEvents sprechen. Wenn Sie welche gefunden haben, teilen Sie sie bitte auch mit. – gprasant

0

In WPF Kontrollzusammensetzung ist sehr verwendet. Dies erfordert die Verwendung eines Routed-Ereignisses, da die Zusammensetzung der Steuerelemente die meiste Zeit die Aktivität freigibt.