首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在应用程序按键上显示列表框上下文菜单?

如何在应用程序按键上显示列表框上下文菜单?
EN

Stack Overflow用户
提问于 2013-08-19 08:56:04
回答 1查看 420关注 0票数 0

我有带有上下文菜单的列表框,当我按“应用键”它没有显示上下文菜单时,它必须像窗口一样工作。

代码语言:javascript
复制
<ListBox.ContextMenu>
   <ContextMenu Name="ZoneIformationList" StaysOpen="true" Background="WhiteSmoke">
      <ContextMenu.BitmapEffect>
         <BitmapEffectGroup/>
      </ContextMenu.BitmapEffect>
      <MenuItem Header="Edit" Name="EditNutritionContextMenu"  />
      <MenuItem Header="Remove" Name="RemoveNutritionContextMenu" />
   </ContextMenu>
</ListBox.ContextMenu>
EN

回答 1

Stack Overflow用户

发布于 2013-08-19 14:34:29

关于如何实现你的目标,你有几个选择。您可以创建一个打开CommandContextMenu,然后向主窗口的InputBindings中添加一个带有命令的KeyBinding和一个ALT + CTRLKeyGesture

您可以从KeyBinding页面了解更多关于KeyBinding类类的信息,从KeyGesture类页面了解更多关于KeyGesture类的信息。

另一个选项是为PreviewMouseDown (或类似的)事件添加一个处理程序,并监视是否按下了ALTCTRL键,然后以编程方式启动ContextMenu控件,如果它们是:

代码语言:javascript
复制
public void ListBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if ((e.KeyboardDevice.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt && 
(e.KeyboardDevice.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
    {
        // Open ContextMenu
    }
}

现在剩下的就是从代码中打开ContextMenu

代码语言:javascript
复制
if (element.ContextMenu != null )
{
    element.ContextMenu.PlacementTarget = element;
    element.ContextMenu.IsOpen = true;
}

如果ContextMenu未正确放置,则可以使用ContextMenu.HorizontalOffsetContextMenu.HorizontalOffset属性设置位置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18309888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档