2010-08-01 16 views
12

en en el código de procedimiento se puede hacer lo siguiente:¿Agregar controladores de eventos múltiples para un evento en XAML?

// Add two event handler for the button click event 
button1.Click += new RoutedEventHandler(button1_Click_1); 
button1.Click += new RoutedEventHandler(button1_Click_2); 

Pero, ¿cómo puedo añadir múltiples controladores de eventos para evento de clic del botón en XAML? ¡Gracias por cualquier pista!

+0

¿Por qué quieres esto? ¿Qué está tratando de lograr? – Dabblernl

+0

Me gustaría hacer esto también. Quiero ser capaz de suscribirse a eventos en el XAML adecuadamente, no de una manera restringida (en su mayoría, ya que da el código más ordenado y que (XAML) se siente incompleta sin este) De cualquier separación punto y coma o simplemente tener múltiples =" "opciones serían agradable – imma

+0

esto permitiría que la composición de los controladores de eventos para elementos específicos libremente de procedimientos generales, en lugar de tener que escribir un procedimiento específicamente para cada elemento sólo para esta composición. En resumen: sería más corto y más dulce. – migle

Respuesta

8

No se puede suscribir más de un controlador de eventos en XAML. Sin embargo, puede lograr el mismo efecto suscribiendo un único controlador de eventos y luego llamando a dos o más métodos desde el controlador de eventos.

private void Button_OnClick(object sender, RoutedEventArgs e) 
    { 
     ButtonOnClick1(); 
     ButtonOnClick2(); 
    } 

    private void ButtonOnClick1() 
    { 
     //Do something... 
    } 

    private void ButtonOnClick2() 
    { 
     //Do something... 
    } 
+0

Creo que esto no tiene sentido. La composición funcional siempre sería posible. Pero escribir esa composición en el XAML evitaría un controlador específico para un botón. – migle

0

Puede especificar varios controladores en xaml así:

<Style TargetType="{x:Type Button}">    
     <EventSetter Event="Click" Handler="ChangeBackground1"/> 
     <EventSetter Event="Click" Handler="ChangeBackground2"/> 
     <EventSetter Event="Click" Handler="ChangeBackground3"/> 
     <EventSetter Event="Click" Handler="ChangeBackground4"/> 
    </Style> 
Cuestiones relacionadas