2009-09-14 10 views
7

¿Hay alguna manera estándar para enrutar todos los eventos clave desde el control A a otro control B? Deseo que el foco del teclado aún esté en A, sin embargo, el controlador de eventos A activará todos los controladores de eventos de B para los eventos clave.Enrutamiento Eventos clave a otro control

edición: Aclaración: no es suficiente llamar a un controlador de eventos específico que escribí para B. Necesito imitar el evento real. Entonces, por ejemplo, quiero que si se envía una clave a un TextBox, se escriba en el TextBox. La solución dada a continuación no hace eso (sin mencionar el hecho de que si se agregan controladores de eventos nuevos a B, falla completamente).

Soy consciente de que WPF diferencia entre el enfoque lógico y el enfoque del teclado, pero necesito ambos enfoques para permanecer en el control A, pero en ciertos casos enrutar su evento entrante a otros controles.

+0

¿No puede simplemente hacer sus eventos clave para el control A hacer algunas comprobaciones y, si es necesario, llamar a los eventos clave para el Control B? – Relster

+0

¡No! Eso no desencadenaría el evento, solo llamaría a una única función específica que una vez estuvo asociada con el evento de clic del botón. Quiero simular el evento real que envía WPF. –

+0

@Elazar - Ver mi edición. ¿Funcionaría el método 'RaiseEvent()'? – Donut

Respuesta

4

¿No podría hacer algo como esto?

private void button1_Click(object sender, RoutedEventArgs e) 
    { 
    // Check if the event needs to be passed to button2's handler 
    if (conditionIsMet) 
    { 
     // Send the event to button2 
     button2.RaiseEvent(e); 
    } 
    else 
    { 
     // button1's "Click" code 
    } 
    } 

    private void button2_Click(object sender, RoutedEventArgs e) 
    { 
    // button2's "Click" code 
    } 

Editar: código modificado para utilizar el método RaiseEvent() para elevar programación un evento específico, en lugar de llamar al controlador de eventos para button2.

+0

¡No! Eso no desencadenaría el evento, solo llamaría a una única función específica que una vez estuvo asociada con el evento de clic del botón. Quiero simular el evento real que envía WPF. –

+0

¡Eso es lo que estaba buscando! –

+0

Me pregunto por qué se llama eventos de elevación. Busqué en Google eventos de incendios e invoco eventos y desencadenó eventos pero sin resultados ... –

Cuestiones relacionadas