WPF 附加事件的应用

当有下面一段代码

<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中统一处理事件了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值