En WPF hemos enrutado eventos. ¿Cuándo deberían usarse estos en lugar de los eventos regulares?WPF: eventos enrutados o eventos regulares?
Respuesta
Los eventos enrutados tienen un comportamiento especial, pero ese comportamiento es en gran medida invisible si está manejando un evento en el elemento donde se genera.
Donde los eventos enrutados se vuelven potentes es si usa cualquiera de los escenarios sugeridos: definir manejadores comunes en una raíz común, componer su propio control o definir su propia clase de control personalizado.
Los receptores de eventos enrutados y las fuentes de eventos enrutados no necesitan compartir un evento común en su jerarquía. Cualquier UIElement o ContentElement puede ser un detector de eventos para cualquier evento enrutado. Por lo tanto, puede utilizar el conjunto completo de eventos enrutados disponibles en todo el conjunto de API de trabajo como una "interfaz" conceptual mediante la cual elementos dispares en la aplicación pueden intercambiar información de eventos. Este concepto de "interfaz" para eventos enrutados es particularmente aplicable para eventos de entrada.
Los eventos enrutados también se pueden usar para comunicarse a través del árbol de elementos, porque los datos de eventos para el evento se perpetúan a cada elemento en la ruta. Un elemento podría cambiar algo en los datos del evento, y ese cambio estaría disponible para el siguiente elemento de la ruta.
Aparte del aspecto de enrutamiento, existen otros dos motivos por los que un evento WPF determinado podría implementarse como un evento enrutado en lugar de un evento CLR estándar. Si va a implementar sus propios eventos, es posible que también tenga en cuenta estos principios:
- Ciertas características de estilo y de plantillas de WPF como EventSetter y EventTrigger requieren el evento hace referencia a un evento enrutado. Este es el escenario de identificador de evento mencionado anteriormente.
- Los eventos enrutados admiten un mecanismo de manejo de clases mediante el cual la clase puede especificar métodos estáticos que tienen la oportunidad de manejar eventos enrutados antes de que cualquier manejador de instancias registrado pueda acceder a ellos. Esto es muy útil en el diseño de control, porque su clase puede imponer comportamientos de clase impulsados por eventos que no pueden suprimirse accidentalmente al manejar un evento en una instancia.
Fuente: MSDN: Routed Events Overview
En composición de control WPF es muy utilizado. que obliga a usar evento enrutado, porque la composición del conjunto de controles expone una sola actividad la mayor parte del tiempo.
- 1. ¿Los eventos enrutados son débiles en WPF
- 2. ¿Qué son los eventos enrutados y cómo es diferente de los eventos normales?
- 3. ¿Cómo puedo obtener una lista de eventos enrutados incorporados en WPF
- 4. Eventos WPF en Winforms
- 5. Depuración de eventos WPF, enlaces
- 6. desactivar eventos burbujeante C# WPF
- 7. WPF y MVVM. Encuadernación Eventos
- 8. ¿Los comandos enrutados de WPF resuelven un problema o lo empeoran?
- 9. WPF utilizando RoutedUICommands personalizados o controladores de eventos simples?
- 10. Una forma de enviar eventos almacenados temporalmente a intervalos regulares
- 11. Cuándo usar eventos sobre comandos en WPF?
- 12. Ayuda con los eventos de WPF TextCompositionManager
- 13. WPF: Eventos de lona No trabajan
- 14. Manejo de eventos de WPF User Control
- 15. Obteniendo eventos WPF ETW utilizando XPerf.exe
- 16. WPF: ¿eventos en una plantilla de control?
- 17. Propagación de eventos de teclado en winforms
- 18. Captura de eventos vs Burbujas de eventos
- 19. Consumir eventos "Seguimiento de eventos para Windows"
- 20. WPF: existe la posibilidad de "enrutar" eventos de mouse normales para tocar eventos en Windows 7
- 21. Métodos o eventos virtuales en C#
- 22. ¿Se producen, desencadenan o disparan eventos?
- 23. Eliminar eventos con jQuery o Javascript
- 24. eventos Backbone
- 25. Serializar eventos
- 26. Eventos UiTextField
- 27. Controlador de eventos en DataTemplate
- 28. WPF MVVM Uso de comandos frente a controladores de eventos
- 29. controles superpuestos C# wpf que no reciben eventos de mouse
- 30. WPF - Gestión de eventos adjuntos personalizado en controles personalizados
Jahedbozorgan: gracias por su respuesta muy completa. Noté que mencionaste una fuente en la respuesta. Pero me preguntaba si había otros libros que hablan sobre RoutedEvents en detalle. Si se encontró con alguno, por favor compártalos también. – gprasant