RoutedEventArgs.Handled Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece un valor que indica el estado actual del control de eventos para un evento enrutado a medida que viaja por la ruta.
public:
property bool Handled { bool get(); void set(bool value); };
public bool Handled { [System.Security.SecurityCritical] get; [System.Security.SecurityCritical] set; }
public bool Handled { get; set; }
[<get: System.Security.SecurityCritical>]
[<set: System.Security.SecurityCritical>]
member this.Handled : bool with get, set
member this.Handled : bool with get, set
Public Property Handled As Boolean
Valor de propiedad
Si se establece, establezca en true
si el evento se va a marcar como controlado; de lo contrario, false
. Si lee este valor, true
indica que un controlador de clases o algún controlador de instancia a lo largo de la ruta ya ha marcado este evento controlado.
false
.indica que ningún controlador de este tipo ha marcado el evento controlado.
El valor predeterminado es false
.
- Atributos
Ejemplos
En el ejemplo siguiente se implementa un controlador de eventos que marca el evento controlado.
protected override void OnPreviewMouseRightButtonDown(System.Windows.Input.MouseButtonEventArgs e)
{
e.Handled = true; //suppress the click event and other leftmousebuttondown responders
MyEditContainer ec = (MyEditContainer)e.Source;
if (ec.EditState)
{ ec.EditState = false; }
else
{ ec.EditState = true; }
base.OnPreviewMouseRightButtonDown(e);
}
Protected Overrides Sub OnPreviewMouseRightButtonDown(ByVal e As System.Windows.Input.MouseButtonEventArgs)
e.Handled = True 'suppress the click event and other leftmousebuttondown responders
Dim ec As MyEditContainer = CType(e.Source, MyEditContainer)
If ec.EditState Then
ec.EditState = False
Else
ec.EditState = True
End If
MyBase.OnPreviewMouseRightButtonDown(e)
End Sub
Comentarios
Marcar el evento controlado limitará la visibilidad del evento enrutado a los agentes de escucha a lo largo de la ruta del evento. El evento sigue desplazando el resto de la ruta, pero solo se invocarán los controladores agregados específicamente con HandledEventsToo
true
en la llamada al método AddHandler(RoutedEvent, Delegate, Boolean) en respuesta. Los controladores predeterminados en los agentes de escucha de instancia (como los expresados en lenguaje de marcado de aplicaciones extensibles (XAML)) no se invocarán. El control de eventos marcados como controlados no es un escenario común.
Si es un autor de control que define sus propios eventos, las decisiones que tome con respecto al control de eventos en el nivel de clase afectarán a los usuarios del control, así como a los usuarios de controles derivados, y potencialmente a otros elementos contenidos por el control o que contienen el control. Para obtener más información, vea marcar eventos enrutados como controlados y control de clases.
En circunstancias muy raras, es adecuado controlar los eventos en los que Handled está marcado true
y modificar los argumentos de evento cambiando Handled a false
. Esto puede ser necesario en determinadas áreas de eventos de entrada de controles, como el control clave de KeyDown frente a TextInput donde los eventos de entrada de bajo nivel y alto compiten por el control y cada uno intenta trabajar con una estrategia de enrutamiento diferente.