【问题标题】:WinRT XAML Cancel Event on Element on Top of AnotherWinRT XAML 取消另一个元素之上的事件
【发布时间】:2014-04-09 02:39:36
【问题描述】:

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

如果点击了Flyout,我怎样才能使它不会在广场上触发事件?

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

这里是 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 事件。

【问题讨论】:

  • 你能把你的 xaml 代码粘贴到这里吗?

标签: xaml winrt-xaml


【解决方案1】:

我能够在包含Flyout 的按钮上放置一个Tapped 处理程序并执行e.Handled = trueFlyout 仍然打开,但第二个事件没有发生。

【讨论】:

    【解决方案2】:

    我无法重现上述问题,无论如何我想您的问题可以通过以下代码 sn-p 解决,

    //Button tapped event

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

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

    希望对你有帮助。 谢谢, Joy Oyiess Rex K

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 2017-11-03
      • 2019-11-02
      • 1970-01-01
      • 2021-10-30
      相关资源
      最近更新 更多