【问题标题】:How to Add ContextMenu to Button如何将 ContextMenu 添加到按钮
【发布时间】:2013-12-26 05:31:25
【问题描述】:

我有一个包含几个按钮的 StackPanel,它们的主题看起来像瓷砖。每个人都可以固定到“开始”屏幕。我想为每个添加一个 ContextMenu 以启用此功能。我该怎么做?另外,如何确定被点击的项目?

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>

【问题讨论】:

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


    【解决方案1】:

    由于您手动创建了这些按钮-我的意思不是generated using DataTemplate 左右-,您还需要手动为每个按钮添加 ContextMenu。

    ...
    <Button x:Name="Tile1" Height="173" Width="173" Margin="12,0,0,0" toolkit:TiltEffect.IsTiltEnabled="True">
        <Button.Content>
            <Image Source="/Assets/Tiles/IconicTileSmall.png"/>
        </Button.Content>
        <toolkit:ContextMenuService.ContextMenu>
            <toolkit:ContextMenu>
                <toolkit:MenuItem Header="Pin To Start" Click="MenuItem_Click"/>
            </toolkit:ContextMenu>
        </toolkit:ContextMenuService.ContextMenu>
    </Button>
    <Button x:Name="Tile2" Height="173" Width="173" Margin="12,0,0,0" toolkit:TiltEffect.IsTiltEnabled="True">
        <Button.Content>
            <Image Source="/Assets/Tiles/IconicTileSmall.png"/>
        </Button.Content>
        <toolkit:ContextMenuService.ContextMenu>
            <toolkit:ContextMenu>
                <toolkit:MenuItem Header="Pin To Start" Click="MenuItem_Click"/>
            </toolkit:ContextMenu>
        </toolkit:ContextMenuService.ContextMenu>
    </Button>
    ...
    

    但至少,有一种方法可以重用处理 MenuItem 的点击事件的方法:

    private void MenuItem_Click(object sender, RoutedEventArgs e)
    {
        var menuItem = (MenuItem) sender;
        var ctxMenu = (ContextMenu) menuItem.Parent;
        var tileButton = (Button) ctxMenu.Owner;
    
        //Next: pin corresponding tileButton to start
    }
    

    【讨论】:

    猜你喜欢
    • 2020-09-18
    • 1970-01-01
    • 2014-05-13
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多