2010-08-01 2 views
12

다음을 수행 할 수 있습니다XAML에서 하나의 이벤트에 대한 다중 이벤트 처리기를 추가 하시겠습니까? 절차 적 코드에서의

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

하지만 어떻게 XAML에서 버튼의 클릭 이벤트에 대한 여러 이벤트 처리기를 추가 할 수 있습니까? 힌트를 보내 주셔서 감사합니다!

+0

을 당신이 원하는 이유는 무엇입니까? 무엇을 성취하려고합니까? – Dabblernl

+0

나는 이것을 역시하고 싶다. 제한된 방식이 아니라 XAML의 이벤트를 제대로 구독 할 수 있기를 원합니다. (주로 XAML이이 기능을 사용하지 않고서는 불완전한 느낌을줍니다.) 세미콜론으로 분리하거나 여러 개 사용하는 경우 = " "옵션이 유용 할 것입니다. – imma

+0

이렇게하면이 구성 요소에 대한 각 요소에 대해 특별히 프로 시저를 작성하지 않고 일반 프로 시저에서 특정 요소에 대한 이벤트 처리기를 자유롭게 작성할 수 있습니다. 간단히 말해서, 그것은 더 짧고 더 달콤 할 것입니다. – migle

답변

8

XAML에서 둘 이상의 이벤트 처리기를 구독 할 수 없습니다. 그러나 단일 이벤트 핸들러를 등록한 다음 두 개 이상의 메소드를 이벤트 핸들러에서 호출하여 동일한 효과를 얻을 수 있습니다.

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

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

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

나는 이것이 지점을 놓친다고 생각한다. 기능적 구성이 항상 가능할 것입니다. 그러나 XAML에 해당 구성을 쓰면 단추에 대한 특정 처리기가 필요하지 않습니다. – migle

0

이 같은 xaml 여러 핸들러를 지정할 수 있습니다

<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> 
관련 문제