输入事件的冒泡和隧道
事件的处理顺序如下所示:
-
针对根元素处理 PreviewMouseDown(隧道)。
-
针对中间元素 1 处理 PreviewMouseDown(隧道)。
-
针对源元素 2 处理 PreviewMouseDown(隧道)。
-
针对源元素 2 处理 MouseDown(冒泡)。
-
针对中间元素 1 处理 MouseDown(冒泡)。
-
针对根元素处理 MouseDown(冒泡)。
典型冒泡事件:
1 <Border Height="50" Width="300" BorderBrush="Gray" BorderThickness="1"> 2 <StackPanel Background="LightGray" Orientation="Horizontal" Button.Click="CommonClickHandler"> 3 <Button Name="YesButton" Width="Auto" >Yes</Button> 4 <Button Name="NoButton" Width="Auto" >No</Button> 5 <Button Name="CancelButton" Width="Auto" >Cancel</Button> 6 </StackPanel> 7 </Border>
此元素树生成类似如下的内容:
Click事件的事件路由为:
Button-->StackPanel-->Border-->...