<Window x:Class="WPF熊俊.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="306" Width="542" >
<StackPanel Height="219" Name="stackPanel1" Width="335" Button.Click="Button_Click">
<Button Content="Button" Height="23" Name="button1" Width="75" />
<Button Content="Button" Height="23" Name="button2" Width="75" />
<Button Content="Button" Height="23" Name="button3" Width="75" />
<CheckBox Content="CheckBox" Height="16" Name="checkBox1" />
</StackPanel>
</Windowprivate void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show((sender as FrameworkElement).Name);
MessageBox.Show((e.Source as FrameworkElement).Name);
}
给StackPanel定义的附加事件是Button.Click="Button_Click",那应该只有Button的单击事件才会路由给StackPanel啊,为什么单击CheckBox也传递给StackPanel了??
2.不要太过迷信XAML语法,建议看看Code + Makeup
但是Button根本就没有Click这个路由事件。
stackPanel1.AddHandler(Button.ClickEvent, new RoutedEventHandler(Button_Click));结果,点击CheckBox,也还是引发了。
Button.ClickEvent == RadioButton.ClickEvent &&
Button.ClickEvent == ButtonBase.ClickEvent;