WinRT XAML取消了另一个元素上的事件

时间:2014-04-09 02:39:37

标签: xaml winrt-xaml

我有一个有Tapped事件处理程序的正方形。在广场内(在顶部)是另一个具有Flyout的按钮。当我单击按钮打开Flyout时,也会触发该方块的事件。

如果单击Flyout,我怎样才能使广告在广场上被触发?

如何取消通过Handled = true发生的RoutedEvent Command

这是XAML

<Grid Margin="0, 0, 50, 50" Width="300">
    <interactivity:Interaction.Behaviors>
        <core:EventTriggerBehavior EventName="Tapped">
            <core:InvokeCommandAction Command="{Binding DataContext.MyTapCommand, ElementName=LayoutRoot}" CommandParameter="{Binding}" />
        </core:EventTriggerBehavior>
    </interactivity:Interaction.Behaviors>
    <Image Source="{Binding MyImagePath}" Width="300" />
    <Border Background="#aa000000" HorizontalAlignment="Stretch" VerticalAlignment="Bottom">
        <TextBlock Text="{Binding Title}" Margin="5" FontSize="18" TextWrapping="Wrap" />
    </Border>
    <Button VerticalAlignment="Top" HorizontalAlignment="Right">
        <Button.Template>
            <ControlTemplate>
                <Grid>
                    <Canvas Height="50" Width="50">
                        <Polygon Points="0,0 50,0 50,50 0,0" Fill="Gray" />
                        <TextBlock Text="+" FontSize="40" Canvas.Top="-16" Canvas.Left="22" Padding="0" />
                    </Canvas>
                </Grid>
            </ControlTemplate>
        </Button.Template>
        <Button.Flyout>
            <MenuFlyout>
                <MenuFlyoutItem Text="Item 1" Command="{Binding DataContext.Item1Command, ElementName=LayoutRoot}" CommandParameter="{Binding}" />
                <MenuFlyoutItem Text="Item 2" Command="{Binding DataContext.Item2Command, ElementName=LayoutRoot}" CommandParameter="{Binding}" />
            </MenuFlyout>
        </Button.Flyout>
    </Button>
</Grid>

所以有一个图像是整个项目。您可以单击图像并触发命令。有一个位于图像顶部的按钮。如果点击该按钮,我就不希望触发Tapped事件。

2 个答案:

答案 0 :(得分:1)

我能够在包含TappedFlyout的按钮上添加e.Handled = true处理程序。 Flyout仍然会打开,但第二个事件不会发生。

答案 1 :(得分:0)

我无法重现上述问题,无论如何我猜您的问题可以通过以下代码段来解决,

//Button tapped event

  private void Button_Click_1(object sender, RoutedEventArgs e)
   {
      if ((sender) is Button)
       {
         // your code                    
       }
   }

因此,当发件人为square时,可以省略它。

我希望它可以帮到你。 谢谢, Joy Oyiess Rex K