【问题标题】:How to pass Tapped event to sibling in the same canvas?如何将 Tapped 事件传递给同一画布中的兄弟姐妹?
【发布时间】:2015-04-12 22:05:00
【问题描述】:

Canvas 中有两个控件,其中一个与另一个重叠(按 z 顺序)。前端控件接收到的Tapped事件默认会路由回父Canvas

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

tl;dr 如何将事件路由到同级而不是返回父级?

【问题讨论】:

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


    【解决方案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();
    }
    

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

    【讨论】:

      猜你喜欢
      • 2021-01-30
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-24
      • 2014-07-12
      • 2018-09-02
      相关资源
      最近更新 更多