使用键盘在数据绑定的WPF TreeView中显示上下文菜单

3
我有一个使用层级模板绑定数据的WPF TreeView,用鼠标可以正常工作,但我想让它也能用键盘控制。我添加了CommandBindings,使得ContextMenu项可以通过“手势”执行,比如CTRL+Delete可以删除当前选中的项,但我想要的是用“属性”键显示上下文菜单,并且用户可以使用方向键进行导航。
我创建了一个CommandBinding并调试了它,但RoutedUIEvent没有ContextMenu。我尝试从Xmal资源中创建它,这样可以工作,但显然不正确,因为所有东西都被禁用了。
我该如何创建一个可以使用键盘导航的WPF ContextMenu?
1个回答

2

我成功地展示了控件的上下文菜单,方法如下:

  • 监听你的键盘事件(例如按下键盘的某个键)
  • 在处理程序中获取你的控件(通过名称或其他方法)
  • 当你有了你的控件后,只需执行:myControl.ContextMenu.IsOpen = true;

希望对你有所帮助。


尝试过了,但这是一个TreeView,事件是在TextBlock元素上触发的,它是树中的节点,没有ContextMenu。这似乎绑定到更高的位置(视觉树?)。ContextMenu是TreeView资源。我还尝试将上下文菜单放置在TextBlock上,但似乎没有帮助。 - Robert
在我看来,这里的问题在于控件上设置contextMenu。如果您的事件是在textBlock上触发的,我建议尝试在树视图中找到此textblock的最近父级具有“ContextMenu”属性的控件,将您的contextMenu设置为此控件,然后当事件被触发时,从TextBlock向上遍历visualTree以获取此父控件,并执行像我建议的“ContextMenu.IsOpen = true”。我没有看到更简单的方法来做到这一点。 - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接