How to Determine ContextMenu Tapped Item

ぃ、小莉子 提交于 2019-12-11 16:20:32

问题


I have a StackPanel that holds buttons, and I have added a ContextMenu so that each item may be pinned to the start screen by selecting that MenuItem. How might I determine on the Tap event which button has been selected?

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>

Edit**

Place the ContextMenu individually for each button.

<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>

回答1:


private void MenuItem_Click(object sender, RoutedEventArgs e)
{
    var menuItem = (MenuItem) sender;
    var ctxMenu = (ContextMenu) menuItem.Parent;
    var tileButton = (Button) ctxMenu.Owner;
}


来源:https://stackoverflow.com/questions/20780097/how-to-determine-contextmenu-tapped-item

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!