ContextMenu点击而不是点击并按住

Rav*_*avi 12 c# silverlight silverlight-toolkit windows-phone-7

我需要打开一个菜单,因为WP7 not designed要执行这样的操作,我正在使用Toolkit.以下是示例代码:

<Border BorderThickness="3" Padding="6">
     <toolkit:ContextMenuService.ContextMenu>
         <toolkit:ContextMenu>
             <toolkit:MenuItem Header="item1" Click="Item1_Click" />
             <toolkit:MenuItem Header="item2" Click="Item2_Click" />
             <toolkit:MenuItem Header="item3" Click="Item3_Click" />
         </toolkit:ContextMenu>
     </toolkit:ContextMenuService.ContextMenu>
     <TextBlock Text="Tap" />
</Border>
Run Code Online (Sandbox Code Playgroud)

现在只要用户按下并保持动作,这就可以正常工作.但我不能要求用户采取这样的行动.我需要在单击/点击/触摸/手势(您要调用它的水)上显示菜单.有人可以建议吗?如果您认为工具包不是最佳方式,那么请使用示例代码建议替代方案.我试过弹出窗口,但这比我的应用程序更糟糕

Fre*_*lad 14

您可以添加GestureListenerBorder并订阅Tap事件.在事件处理程序中,如果没有逻辑父代,则获取ContextMenufor Border和设置IsOpen为true.

<Border BorderThickness="3" Padding="6">
    <toolkit:GestureService.GestureListener>
        <toolkit:GestureListener Tap="GestureListener_Tap" />
    </toolkit:GestureService.GestureListener>
    <toolkit:ContextMenuService.ContextMenu>
        <toolkit:ContextMenu>
            <toolkit:MenuItem Header="item1" Click="Item1_Click" />
            <toolkit:MenuItem Header="item2" Click="Item2_Click" />
            <toolkit:MenuItem Header="item3" Click="Item3_Click" />
        </toolkit:ContextMenu>
    </toolkit:ContextMenuService.ContextMenu>
    <TextBlock Text="Tap" />
</Border>

private void GestureListener_Tap(object sender, GestureEventArgs e)
{
    Border border = sender as Border;
    ContextMenu contextMenu = ContextMenuService.GetContextMenu(border);
    if (contextMenu.Parent == null)
    {
        contextMenu.IsOpen = true;
    }
}
Run Code Online (Sandbox Code Playgroud)