但你处理RoutedEvent 或者其子类的的时候,你可以通过RoutedEventArgs.Source 属性来获得事件的来源,同时事件处理函数同样也有一个sender 参数来指出事件的来源。
在路由事件中,RoutedEventArgs.Source 是引发事件的控件的引用,而sender 是事件处理程序拥有者的引用。
在下面的例子中,RoutedEventArgs.Source 是Button 类型的引用。而sender 则是StackPanel 类型的引用,因为它拥有Click 事件处理函数。
<StackPanel ButtonBase.Click="Button_Click">
<Button Content="Keaton" />
<Button Content="Chaplin" />
<Button Content="Arbuckle" />
</StackPanel>
private void Button_Click(object sender, RoutedEventArgs e)
{
Button b = e.Source as Button;
MessageBox.Show(string.Format("You clicked on {0} button, sender is of type {1}",
b.Content, sender.GetType().ToString()));
}
原文地址:https://wpf.2000things.com/2012/02/27/502-sender-vs-routedeventargs-source/