我有一个有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
事件。
答案 0 :(得分:1)
我能够在包含Tapped
和Flyout
的按钮上添加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