In WPF haben wir Ereignisse weitergeleitet. Wann sollten diese anstelle von regulären Ereignissen verwendet werden?WPF: Geführte Ereignisse oder regelmäßige Ereignisse?
Antwort
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
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.
- 1. Angepasste Ereignisse in WPF
- 2. WPF-Ereignisse in Winforms
- 3. WPF Aufruf Befehle über Ereignisse
- 4. WPF-Befehle vs Ereignisse Vorteile/Nachteile
- 5. WPF Keine Ereignisse von Steuerelementen in RichTextBox
- 6. Ereignisse oder Lambdas in C#?
- 7. Keine Ereignisse an WPF adorner Ebene übergeben
- 8. WPF MultiTouch DeltaManipulation Maus Ereignisse äquivalent?
- 9. GotFocus und LostFocus Ereignisse in WPF TextBox
- 10. WPF-Routing-Ereignisse, Tunneling und Sprudeln
- 11. Event Bubbling für benutzerdefinierte Ereignisse in WPF?
- 12. geroutete Ereignisse in multi-instanziierten Benutzersteuerelementen wpf
- 13. Schwache Ereignisse in .NET?
- 14. So schließen Sie Server-Gesendete Ereignisse Ereignisse
- 15. Tunneling-Ereignisse und ContextMenu
- 16. Keyboard.KeyDown Ereignisse auf ModelVisual3D
- 17. Uibutton Ereignisse
- 18. Serialisierung Ereignisse
- 19. Sprudelnde Ereignisse.
- 20. Sprudeln Ereignisse zu abonnieren
- 21. Werden NSNotificationCenter-Ereignisse synchron oder asynchron empfangen?
- 22. Anpassung Hooks: virtuelle Funktionen oder Ereignisse?
- 23. Werden Ereignisse ausgelöst, ausgelöst oder ausgelöst?
- 24. entfernen Ereignisse mit Jquery oder Javascript
- 25. Focused oder OnFocuseChange Ereignisse werden nicht ausgelöst
- 26. Zugriff auf Ereignisse im Kalender "Ereignisse gefunden in Mail"
- 27. UITableView Edit/Done-Ereignisse
- 28. Zugreifen auf Slider.Thumb Ereignisse
- 29. nicht empfangen keyup Ereignisse
- 30. Thread-Exit-Ereignisse - C++
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