Agradecería si algún cuerpo puede explicarlo con un ejemplo simple.¿Qué son los eventos enrutados y cómo es diferente de los eventos normales?
Respuesta
Imagine una ventana que contiene una jerarquía densa de controles secundarios. Ahora digamos que desea hacer algo, hay un clic derecho en cualquier lugar de su ventana.
- Con eventos normales, tendría que manejar un evento Click para todos los controles, porque no está seguro de dónde podría hacer clic el usuario.
- Con WPF routed events, los eventos "burbuja" o "túnel" (es decir, recorren el árbol de la UI o hacia abajo) si no encuentran un controlador de eventos, que "maneja" en el nivel actual. Por lo tanto, podría escribir un manejador para el evento de la ventana, es decir, TopLevel. (WPF tiene una convención de pares de eventos, PreviewXXX y XXX - el evento PreviewXXX se dispara primero y los túneles descienden desde la raíz al control que recibió el estímulo y el evento homólogo XXX luego sube desde control secundario a Root). Así que si hace clic en un botón, WPF se desplaza hacia arriba la jerarquía de la interfaz de usuario, la invocación de todos los manipuladores que encuentra (a menos que alguien se celebra el evento ha "manejado" en los argumentos del evento.)
eventos enrutados son eventos con más " habilidades de viaje ', como se menciona en una respuesta Gishu. eventos enrutados están representados por una instancia de una clase RoutedEvent + evento .NET ordinaria, que lo envuelve:
public class MyClassWithARoutedEvent : UIElement
{
public static readonly RoutedEvent DoSomethingEvent;
public event RoutedEventHandler DoSomething
{
add { base.AddHandler (MyClassWithARoutedEvent.DoSomethingEvent, value);
remove { base.AddHandler (MyClassWithARoutedEvent.DoSomethingEvent, value);
}
}
Se podría usar normalmente eventos promocionado en este tipo de situaciones:
- implementar su propio control que sin problemas se integra con la infraestructura de WPF Proceso de sucesos
- , disparadas por diferentes controles en una raíz común
- tipo de comunicación entre los elementos en un árbol de elementos en la mayoría de situaciones que Wil Probablemente use la infraestructura de eventos enrutados sin siquiera darme cuenta.
Además, vale la pena mencionar que puede usar RoutedEvent en su control incluso si no lo define o incluso hereda de un elemento, lo que sí lo hace. Esto se debe a que realmente puede pensar en una instancia de RoutedEvent como un nombre sólido de un evento. Por lo tanto, si usted tiene un acceso a este 'nombre' (esta es la razón por una instancia de un evento enrutado generalmente se hace pública), puede deberse que: eventos
public class MyClassWithARoutedEvent : UIElement
{
public static readonly RoutedEvent ClickEvent;
static MyClassWithARoutedEvent ()
{
ClickEvent = ButtonBase.ClickEvent.AddOwner(typeof (MyClassWithARoutedEvent));
}
// A wrapper should be placed here as described above
}
- 1. ¿Los eventos enrutados son débiles en WPF
- 2. WPF: eventos enrutados o eventos regulares?
- 3. ¿Qué tan costosos son los eventos MySQL?
- 4. En Backbone.js, ¿qué son todos los eventos para los "binds"?
- 5. Calendario de Google: muestra eventos recurrentes, como eventos normales
- 6. ¿Qué son los eventos de vista previa de WPF?
- 7. ¿Cómo funcionan los eventos débiles?
- 8. ¿Cuál es la diferencia entre los eventos lógicos y los eventos nativos en GWT?
- 9. ¿Qué significan los eventos de perf cache?
- 10. ¿En qué casos es necesario desapegarse de los eventos?
- 11. ¿Es posible ampliar los eventos de Intellitrace?
- 12. ¿Debo deshacerme de los eventos?
- 13. DoEvents no hace los eventos ... ¿Por qué?
- 14. ¿Los eventos CDI de Java EE 6 son transaccionales?
- 15. ¿Es posible enviar eventos en objetos normales (no DOM)?
- 16. ¿Por qué no fluyen los eventos de audio y video?
- 17. ¿Cómo maneja Android los eventos GUI?
- 18. orden de los eventos onclick
- 19. ¿Por qué los comandos y eventos se representan por separado?
- 20. ¿Cómo enlaza JavaScript los eventos WinRT?
- 21. ¿Cómo funcionan los eventos virtuales en C#?
- 22. ¿Cómo escuchar todos los eventos de Apple?
- 23. ¿Cuál es la diferencia entre los eventos Control.Enter y Control.GotFocus?
- 24. ¿Cómo funcionan los oyentes de eventos?
- 25. Cómo se asignan los eventos en .NET
- 26. ¿Cómo puedo obtener una lista de eventos enrutados incorporados en WPF
- 27. ¿Cuáles son los eventos que puedo usar en Excel
- 28. C# Eventos sin argumentos. ¿Cómo los manejo?
- 29. ¿Cuáles son los conceptos básicos para tratar los eventos de entrada de usuario en Android?
- 30. ¿Cuáles son los eventos más recientes y más recientes en los que jquery puede engancharse?
vista previa son túneles, no burbujeante. –
@John - ¡Vaya! mi wpf se ha vuelto un poco oxidado. Gracias por la corrección ... actualizada. – Gishu