2009-05-03 16 views

Respuesta

12

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

+0

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

0

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.

Cuestiones relacionadas