WPF(二)路由事件3.附加事件

假设在StackPanel面板中包含了一堆按钮,并且希望在一个事件处理程序中处理所有这些按钮的事件,一种办法是每个按钮的Click事件关联到同一个事件处理程序。还有一种更简单的办法,可以通过处理更高元素的Click事件来处理所有按钮的单击事件。

        <StackPanel Button.Click="DoSomething" Margin="5">
<Button Name="cmd1">Button1</Button>
<Button Name="cmd2">Button2</Button>
<Button Name="cmd3">Button3</Button>
<Button Name="cmd4">Button4</Button>
</StackPanel>


如果想判断是哪一个按钮被点击,可以根据按钮的Name属性进行判断

        private void DoSomething(object sender, RoutedEventArgs e)
{
if (sender == cmd1)
{
//code
}
else if (sender == cmd2)
{
//code
}
else if (sender == cmd3)
{
//code
}
else if (sender == cmd4)
{
//code
}
}


还有一种办法可以根据按钮的Tag属性进行判断,必须要设置tag的值

        private void DoSomething(object sender, RoutedEventArgs e)
{
object tag = ((FrameworkElement)sender).Tag;
}



原文地址:https://www.cnblogs.com/WilliamJiang/p/2340775.html