我在Canvas
中有两个控件,其中一个与另一个重叠(在z顺序中)。默认情况下,前端控件收到的Tapped
个事件将路由回父Canvas
。
但是,我希望前面的控件忽略该事件并让后面的控件接收它。通过在SO中搜索,我发现我们无法以任何方式“模拟”对背景控件的点击,所以我该怎么做?
tl; dr 如何将事件路由到兄弟而不是父母?
答案 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();
}
现在,如果您点击屏幕的红色部分或屏幕的紫色部分,您将看到对话框。