【问题标题】:How to Determine ContextMenu Tapped Item如何确定 ContextMenu 被点击的项目
【发布时间】:2013-12-26 06:19:26
【问题描述】:

我有一个包含按钮的 StackPanel,并且我添加了一个 ContextMenu,以便可以通过选择 MenuItem 将每个项目固定到开始屏幕。我如何确定在Tap 事件中选择了哪个按钮?

MainPage.xaml

<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">

                    <Button x:Name="Tile1" Height="173" Width="173" Margin="12,0,0,0" Click="1_Click" Style="{StaticResource ButtonStyle1}" toolkit:TiltEffect.IsTiltEnabled="True">
                        <Button.Content>
                            <Image Source="/Assets/Tiles/1.png"/>
                        </Button.Content>
                    </Button>
                    <Button x:Name="Tile2" Height="173" Width="173" Margin="12,0,0,0" Click="2_Click" Style="{StaticResource ButtonStyle1}" toolkit:TiltEffect.IsTiltEnabled="True">
                        <Button.Content>
                            <Image Source="/Assets/Tiles/2.png"/>
                        </Button.Content>
                    </Button>
                    <Button x:Name="Tile3" Height="173" Width="173" Margin="12,0,0,0" Click="3_Click" Style="{StaticResource ButtonStyle1}" toolkit:TiltEffect.IsTiltEnabled="True">
                        <Button.Content>
                            <Image Source="/Assets/Tiles/3.png"/>
                        </Button.Content>
                    </Button>
</StackPanel>
<toolkit:ContextMenuService.ContextMenu>
                    <toolkit:ContextMenu x:Name="ContextMenu">
                        <toolkit:MenuItem Header="pin to start" Tap="ContextMenuItem_Tap"/>
                    </toolkit:ContextMenu>
                </toolkit:ContextMenuService.ContextMenu>

编辑**

为每个按钮单独放置 ContextMenu。

<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">

                    <Button x:Name="Tile1" Height="173" Width="173" Margin="12,0,0,0" Click="1_Click" Style="{StaticResource ButtonStyle1}" toolkit:TiltEffect.IsTiltEnabled="True">
                        <Button.Content>
                            <Image Source="/Assets/Tiles/1.png"/>
                        </Button.Content>
                        <toolkit:ContextMenuService.ContextMenu>
                    <toolkit:ContextMenu x:Name="ContextMenu">
                        <toolkit:MenuItem Header="pin to start" Tap="ContextMenuItem_Tap"/>
                    </toolkit:ContextMenu>
                </toolkit:ContextMenuService.ContextMenu>
                    </Button>
                    <Button x:Name="Tile2" Height="173" Width="173" Margin="12,0,0,0" Click="2_Click" Style="{StaticResource ButtonStyle1}" toolkit:TiltEffect.IsTiltEnabled="True">
                        <Button.Content>
                            <Image Source="/Assets/Tiles/2.png"/>
                        </Button.Content>
                        <toolkit:ContextMenuService.ContextMenu>
                    <toolkit:ContextMenu x:Name="ContextMenu">
                        <toolkit:MenuItem Header="pin to start" Tap="ContextMenuItem_Tap"/>
                    </toolkit:ContextMenu>
                </toolkit:ContextMenuService.ContextMenu>
                    </Button>
                    <Button x:Name="Tile3" Height="173" Width="173" Margin="12,0,0,0" Click="3_Click" Style="{StaticResource ButtonStyle1}" toolkit:TiltEffect.IsTiltEnabled="True">
                        <Button.Content>
                            <Image Source="/Assets/Tiles/3.png"/>
                        </Button.Content>
                        <toolkit:ContextMenuService.ContextMenu>
                    <toolkit:ContextMenu x:Name="ContextMenu">
                        <toolkit:MenuItem Header="pin to start" Tap="ContextMenuItem_Tap"/>
                    </toolkit:ContextMenu>
                </toolkit:ContextMenuService.ContextMenu>
                    </Button>
</StackPanel>

【问题讨论】:

  • 您的问题到底是什么?你想在这里做什么?
  • 我最初的问题是如何从 ContextMenu Tap 事件中确定项目。所有按钮都分配有相同的 Tap 事件处理程序。在另一个问题的帮助下,我得到了下面我添加为答案的解决方案。现在一切正常。

标签: xaml windows-phone-7 button windows-phone-8 contextmenu


【解决方案1】:
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
    var menuItem = (MenuItem) sender;
    var ctxMenu = (ContextMenu) menuItem.Parent;
    var tileButton = (Button) ctxMenu.Owner;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    相关资源
    最近更新 更多