在XAML中为一个事件添加多个事件处理程序?

14

在过程化代码中,可以执行以下操作:

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

但是我该如何在XAML中为按钮的单击事件添加多个事件处理程序呢?感谢任何提示!


你为什么想要这个?你想要实现什么目标? - Dabblernl
1
我也想这样做。我希望能够以适当的方式订阅XAML中的事件,而不是受限制的方式(主要是因为它可以使代码更整洁,而且没有这个功能(XAML)会感觉不完整)。使用分号分隔或只有多个<event>="<handler>"选项都是不错的选择。 - imma
这将允许从通用程序自由地组合特定元素的事件处理程序,而不必为每个元素编写一个专门的过程来进行此组合。简而言之:它会更短,更甜。 - migle
2个回答

7

在XAML中,您不能订阅多个事件处理程序。但是,您可以通过订阅单个事件处理程序,然后从事件处理程序调用两个或更多方法来实现相同的效果。

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

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

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

1
我认为这样做有些不对。函数式组合总是可行的。但是在XAML中编写该组合将避免为按钮编写特定的处理程序。 - migle

5
你可以在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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接