使用键盘在数据绑定WPF树视图中显示上下文菜单

使用键盘在数据绑定WPF树视图中显示上下文菜单,wpf,treeview,contextmenu,Wpf,Treeview,Contextmenu,我有一个数据绑定(通过HierachicTemplates)WPF树视图,可以很好地使用鼠标,但我希望它能够用键盘驱动它。我添加了CommandBindings,以便可以通过“手势”执行ContextMenu项;与CTRL+Delete一样,可以删除当前选定的项目,但我希望“属性”键能够显示上下文菜单,并且用户能够使用光标键进行导航 我创建了一个CommandBinding并对其进行了调试,但RoutedUIEvent确实有一个ContextMenu。我试着从Xmal资源创建它,但它显然不正确,

我有一个数据绑定(通过HierachicTemplates)WPF树视图,可以很好地使用鼠标,但我希望它能够用键盘驱动它。我添加了CommandBindings,以便可以通过“手势”执行ContextMenu项;与CTRL+Delete一样,可以删除当前选定的项目,但我希望“属性”键能够显示上下文菜单,并且用户能够使用光标键进行导航

我创建了一个CommandBinding并对其进行了调试,但RoutedUIEvent确实有一个ContextMenu。我试着从Xmal资源创建它,但它显然不正确,因为所有东西都被禁用了


如何创建可以用键盘导航的WPF上下文菜单?

我成功地显示了控件的上下文菜单,如下所示:

  • 监听键盘事件(例如属性键关闭)
  • 在处理程序中,获取控件(通过名称或任何方法)
  • 拥有控件后,只需执行以下操作:
    myControl.ContextMenu.IsOpen=true

希望有帮助。

尝试过,但这是一个树视图事件是在树中的节点TextBlock元素上触发的,该元素没有ContextMenu。这似乎与更高的层次(视觉树?)有关。contextMenu是一个TreeView资源。我还尝试将上下文菜单放在文本块上,但似乎没有帮助。这里的问题在于我认为设置上下文菜单的控件。如果您的事件是在textBlock上触发的,我建议您尝试在具有“ContextMenu”属性的树视图中查找此textBlock最近的父级,将您的ContextMenu设置为此控件,然后在触发事件时,从您的textBlock转到visualTree,以获取此父级控件并执行“ContextMenu.IsOpen=true”就像我建议的。我看不到任何更容易做到这一点的方法。