c# - 点击上下文菜单而不是点击并按住

标签 c# silverlight windows-phone-7 silverlight-toolkit

我需要打开一个菜单,由于 WP7 未设计来执行此类操作,因此我正在借助 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>

现在,只要用户执行按住操作,它就可以正常工作。但我不能要求用户执行此类操作。我需要通过单击/点击/触摸/手势(无论您想调用它)来显示菜单。有人可以建议吗?如果您认为工具包不是最好的方法,请使用示例代码建议替代方案。我尝试了弹出窗口,但这对我的应用程序来说弊大于利

最佳答案

您可以将 GestureListener 添加到 Border 并订阅 Tap 事件。在事件处理程序中,您获取 BorderContextMenu,如果它没有逻辑父级,则将 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;
    }
}

关于c# - 点击上下文菜单而不是点击并按住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4913087/

相关文章:

c# - 非常大的字符串到字节数组

c# - Silverlight 3 - 如何将 DataGrid 内容设为 "refresh"?

C# Metro 应用程序如何从网络加载图像

php - 使用 php 为 Windows Phone 7 发送推送通知

c# - .NET Core + .NET 4 在进程中并行执行?

c# - 将未知的装箱简单值类型(char、int、ulong 等)转换为 UInt64

c# - 如何使页面适合 Silverlight WebBrowser 控件?

silverlight - Socket.SendAsync 线程安全有效吗?

wpf - 使 silverlight UserControl 填充内容控件中的可用空间

windows-phone-7 - WP7 中的浏览器屏幕截图为位图