当有下面一段代码
<StackPanel Orientation="Vertical" Margin="10,0,0,0" >
<Button Name="Button1" Content="1" Width="50" Height="30" Click="_Click"/>
<Button Name="Button2" Content="2" Width="50" Height="30" Click="_Click"/>
<Button Name="Button3" Content="3" Width="50" Height="30" Click="_Click"/>
<Button Name="Button4" Content="4" Width="50" Height="30" Click="_Click"/>
<Button Name="Button5" Content="5" Width="50" Height="30" Click="_Click"/>
<CheckBox Name="CheckBox1" Click="_Click" HorizontalAlignment="Center"
Content="CheckBox1" VerticalAlignment="Center"/>
</StackPanel>
一个panel中放了很多的按钮还有CheckBox,每一个按钮都有一个相同的Click,所有控件的事件只要触发同一个事件就可以了,像上面这样写会显得界面太复杂,很累赘。我们知道Click事件是冒泡事件,那么我们可以在它们的上一级中定义一个Click事件来统一接收处理嘛?
<StackPanel Orientation="Vertical" Margin="10,0,0,0" Click="_Click">
<Button Name="Button1" Content="1" Width="50" Height="30"/>
<Button Name="Button2" Content="2" Width="50" Height="30"/>
<Button Name="Button3" Content="3" Width="50" Height="30"/>
<Button Name="Button4" Content="4" Width="50" Height="30"/>
<Button Name="Button5" Content="5" Width="50" Height="30"/>
<CheckBox Name="CheckBox1" HorizontalAlignment="Center"
Content="CheckBox1" VerticalAlignment="Center"/>
</StackPanel>
很遗憾这样是不对的,因为StackPanel中并没有Click事件,Click事件只存在于ButtonBase中(Button,RadioButton,CheckBox等这几个控件),所以这个时候只有附加事件能满足这样的需求了。
<StackPanel Orientation="Vertical" Margin="10,0,0,0" ButtonBase.Click="_Click">
<Button Name="Button1" Content="1" Width="50" Height="30" />
<Button Name="Button2" Content="2" Width="50" Height="30" />
<Button Name="Button3" Content="3" Width="50" Height="30" />
<Button Name="Button4" Content="4" Width="50" Height="30" />
<Button Name="Button5" Content="5" Width="50" Height="30" />
<CheckBox Name="CheckBox1" HorizontalAlignment="Center" Content="CheckBox1"
VerticalAlignment="Center"/>
</StackPanel>
这样就可以在StackPanel中统一处理事件了。