使用键盘在数据绑定WPF树视图中显示上下文菜单
我有一个数据绑定(通过HierachicTemplates)WPF树视图,可以很好地使用鼠标,但我希望它能够用键盘驱动它。我添加了CommandBindings,以便可以通过“手势”执行ContextMenu项;与CTRL+Delete一样,可以删除当前选定的项目,但我希望“属性”键能够显示上下文菜单,并且用户能够使用光标键进行导航 我创建了一个CommandBinding并对其进行了调试,但RoutedUIEvent确实有一个ContextMenu。我试着从Xmal资源创建它,但它显然不正确,因为所有东西都被禁用了使用键盘在数据绑定WPF树视图中显示上下文菜单,wpf,treeview,contextmenu,Wpf,Treeview,Contextmenu,我有一个数据绑定(通过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”就像我建议的。我看不到任何更容易做到这一点的方法。