2010-08-01 45 views
12

trong mã thủ tục trong thể làm như sau:Thêm nhiều trình xử lý sự kiện cho một sự kiện trong XAML?

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

Nhưng làm thế nào tôi có thể thêm nhiều xử lý sự kiện cho nút của sự kiện click trong XAML? Cảm ơn mọi gợi ý!

+0

Tại sao bạn muốn điều này? Bạn đang cố gắng để thực hiện? – Dabblernl

+0

Tôi cũng muốn làm điều này. Tôi muốn có thể đăng ký các sự kiện trong XAML đúng cách, không theo cách hạn chế (chủ yếu là vì nó cung cấp mã gọn hơn và nó (XAML) cảm thấy không đầy đủ nếu không có điều này) Tách cách nửa tràng bán hoặc chỉ có nhiều = " "Tùy chọn sẽ là tốt đẹp – imma

+0

Điều này sẽ cho phép soạn các trình xử lý sự kiện cho các phần tử cụ thể một cách tự do từ các thủ tục chung, thay vì phải viết một thủ tục cụ thể cho từng phần tử chỉ cho thành phần này. Tóm lại: nó sẽ ngắn hơn và ngọt ngào hơn. – migle

Trả lời

8

Bạn không thể đăng ký nhiều trình xử lý sự kiện trong XAML. Tuy nhiên, bạn có thể đạt được hiệu ứng tương tự bằng cách đăng ký một trình xử lý sự kiện duy nhất và sau đó gọi hai hoặc nhiều phương thức từ trình xử lý sự kiện.

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

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

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

Tôi nghĩ rằng điều này bỏ lỡ điểm. Thành phần chức năng sẽ luôn luôn có thể. Nhưng viết thành phần đó trong XAML sẽ tránh một trình xử lý cụ thể cho một nút. – migle

0

Bạn có thể chỉ định nhiều xử lý trong xaml như thế này:

<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> 
Các vấn đề liên quan