2010-08-01 13 views
12

in codice di procedura può effettuare le seguenti operazioni:Aggiungi più gestori di eventi per un evento in XAML?

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

Ma come posso aggiungere multipla gestori di eventi per l'evento click del pulsante in XAML? Grazie per qualsiasi suggerimento!

+0

Perché vuoi questo? Cosa stai cercando di realizzare? – Dabblernl

+0

Vorrei farlo anche io. Voglio essere in grado di iscriversi agli eventi in XAML correttamente, non in modo limitato (principalmente perché dà il codice tidier e (XAML) si sente incompleto senza questo) Separazione del punto e virgola o semplicemente avere più = " "le opzioni sarebbero buone – imma

+0

Ciò consentirebbe di comporre i gestori di eventi per elementi specifici liberamente da procedure generali, invece di dover scrivere una procedura specifica per ciascun elemento solo per questa composizione. In breve: sarebbe più breve e più dolce. – migle

risposta

8

Non è possibile sottoscrivere più di un gestore di eventi in XAML. Tuttavia, è possibile ottenere lo stesso effetto sottoscrivendo un singolo gestore di eventi e quindi chiamando due o più metodi dal gestore eventi.

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

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

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

Penso che manchi questo punto. La composizione funzionale sarebbe sempre possibile. Ma scrivere quella composizione in XAML dovrebbe evitare un gestore specifico per un pulsante. – migle

0

È possibile specificare più gestori in xaml come questo:

<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> 
Problemi correlati