C#/ XAML Tapped事件

时间:2014-10-30 10:57:31

标签: c# xaml windows-runtime microsoft-metro winrt-xaml

当我们遇到这样的情况时:

<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区域而不在他孩子/子孩子的区域时,才能呼叫。

2 个答案:

答案 0 :(得分:5)

e.Handled = true事件处理程序中设置e(其中TappedRoutedEventArgsGrid_n_OnTapped) - 它将阻止冒泡事件到元素父级。

答案 1 :(得分:1)

我不会尝试围绕该问题进行构建,只是检查原始来源是否正确:

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