111,092
社区成员




<Border Height="50" Width="300" BorderBrush="Gray" BorderThickness="1">
<StackPanel Background="LightGray" Orientation="Horizontal" Button.Click="CommonClickHandler">
<Button Name="YesButton" Width="Auto" >Yes</Button>
<Button Name="NoButton" Width="Auto" >No</Button>
<Button Name="CancelButton" Width="Auto" >Cancel</Button>
</StackPanel>
</Border>
<Grid Width="400" Height="400">
<StackPanel Background="Transparent">
<StackPanel.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="Background.(SolidColorBrush.Color)" From="Transparent" To="Red" AutoReverse="True" Duration="0:0:1">
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</StackPanel.Triggers>
<Button Width="120" Height="20" Content="test" Margin="20">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Width" From="120" To="150" AutoReverse="True" Duration="0:0:1">
</DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Button.Triggers>
</Button>
</StackPanel>
</Grid>
点击Button,会同时触发2个动画,Button按钮宽度由120增至150, 父容器的背景色由透明变红。注意点击空白区域是不会触发事件的。
隧道事件先从上层父元素触发,逐层向下传递,直到源目标。
你可以在触发事件时 查看 RoutedEventArgs 的 Source,OriginalSource这2个属性的区别会更好理解。