当我们遇到这样的情况时:
<Grid x:Name="Grid1" Tapped="Grid1_OnTapped">
<!-- ... -->
<Grid x:Name="Grid2" Tapped="Grid2_OnTapped">
<!-- ... -->
...
<Grid x:Name="Grid_n" Tapped="Grid_n_OnTapped">
<!-- ... -->
</Grid>
</Grid>
</Grid>
当用户点击Grid_n
时,会调用Grid_n_OnTapped
事件方法,但也调用所有父网格的所有事件方法。所以我的问题是,是否有可能以某种方式阻止这种情况,即&#34; Grid1_OnTapped&#34;只有当点击位置在Grid1
区域而不在他孩子/子孩子的区域时,才能呼叫。
答案 0 :(得分:5)
在e.Handled = true
事件处理程序中设置e
(其中TappedRoutedEventArgs
为Grid_n_OnTapped
) - 它将阻止冒泡事件到元素父级。
答案 1 :(得分:1)
我不会尝试围绕该问题进行构建,只是检查原始来源是否正确:
// Deny first
if ((e.OriginalSource as Grid) != this.Grid_n)
return;
// Normal handler starts here.