C#/XAML Tapped event
本文关键字:event Tapped XAML | 更新日期: 2023-09-27 18:28:21
当我们遇到这样的情况时:
<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
事件方法,但也会调用所有父网格的所有事件方法。所以我的问题是,有没有可能以某种方式防止这种情况,即只有当tap的位置在Grid1
的区域而不是在他孩子/子孩子的区域时,才能调用"Grid1_OnTapped"。
在Grid_n_OnTapped
事件处理程序中设置e.Handled = true
(其中e
是TappedRoutedEventArgs
)-这将防止向元素父级发出冒泡事件。
我不会试图围绕这个问题进行构建,只是简单地检查原始来源是否正确:
// Deny first
if ((e.OriginalSource as Grid) != this.Grid_n)
return;
// Normal handler starts here.