如何将Tapped事件传递给同一画布中的兄弟?

时间:2015-02-12 08:45:34

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

我在Canvas中有两个控件,其中一个与另一个重叠(在z顺序中)。默认情况下,前端控件收到的Tapped个事件将路由回父Canvas

但是,我希望前面的控件忽略该事件并让后面的控件接收它。通过在SO中搜索,我发现我们无法以任何方式“模拟”对背景控件的点击,所以我该怎么做?

tl; dr 如何将事件路由到兄弟而不是父母?

1 个答案:

答案 0 :(得分:1)

使用IsHitTestVisible属性。例如,这是一个XAML片段:

<Canvas>
  <Rectangle Width="200" Height="200" 
             Canvas.Left="100" Canvas.Top="100" 
             Fill="Red" Tapped="Rectangle_Tapped"/>
  <Rectangle Width="200" Height="200" 
             Canvas.Left="200" Canvas.Top="200" 
             Fill="Blue" IsHitTestVisible="False" 
             Opacity="0.5"/>
</Canvas>

匹配代码:

private void Rectangle_Tapped(object sender, TappedRoutedEventArgs e)
{
  new MessageDialog("Ouch!").ShowAsync();
}

现在,如果您点击屏幕的红色部分或屏幕的紫色部分,您将看到对话框。