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"。

C#/XAML Tapped event

Grid_n_OnTapped事件处理程序中设置e.Handled = true(其中eTappedRoutedEventArgs)-这将防止向元素父级发出冒泡事件。

我不会试图围绕这个问题进行构建,只是简单地检查原始来源是否正确:

// Deny first
if ((e.OriginalSource as Grid) != this.Grid_n)
    return;
// Normal handler starts here.