2010-08-01 20 views
12

w kodzie proceduralnym może wykonać następujące czynności:Dodaj wiele programów obsługi zdarzeń dla jednego zdarzenia w XAML?

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

Ale jak mogę dodać stwardnienie obsługi zdarzeń dla zdarzenia Click przycisku w XAML? Dzięki za podpowiedź!

+0

Dlaczego chcesz tego? Co próbujesz osiągnąć? – Dabblernl

+0

Chciałbym też to zrobić. Chcę móc subskrybować zdarzenia w XAML poprawnie, nie w ograniczony sposób (głównie dlatego, że daje to kod Tidiera i to (XAML) wydaje się niekompletne bez tego) Separacja średniego lub po prostu wielokrotnego = " "Opcje byłyby przyjemne. – imma

+0

Umożliwiłoby to komponowanie procedur obsługi zdarzeń dla określonych elementów swobodnie z ogólnych procedur, zamiast konieczności pisania procedury specjalnie dla każdego elementu tylko dla tej kompozycji. W skrócie: będzie krótszy i słodszy. – migle

Odpowiedz

8

Nie można subskrybować więcej niż jednej procedury obsługi zdarzeń w XAML. Można jednak osiągnąć ten sam efekt, subskrybując jedną procedurę obsługi zdarzeń, a następnie wywołując dwie lub więcej metod z procedury obsługi zdarzeń.

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

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

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

Myślę, że to mija się z celem. Funkcjonalna kompozycja byłaby zawsze możliwa. Ale pisanie tej kompozycji w XAML pozwoliłoby uniknąć określonego programu obsługi przycisku. – migle

0

Można określić wiele procedur obsługi w xaml tak:

<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> 
Powiązane problemy