2010-12-19 70 views
3

我有一个DataBound(通过HierachicTemplates)WPF TreeView,它可以很好地与鼠标配合使用,但我希望它能够用键盘驱动它。我已经添加了CommandBindings,以便ContextMenu项目可以通过'手势'执行;像CTRL + Delete来删除当前选中的项目,但我想要的是'Properties'键显示上下文菜单,并让用户能够使用光标键来导航它。使用键盘显示数据绑定中的上下文菜单WPF TreeView

我创建了一个CommandBinding并进行了调试,但RoutedUIEvent确实有一个ContextMenu。我试图从Xmal资源创建它,并且工作,但显然不正确,因为一切都被禁用。

如何创建一个可以用键盘导航的WPF ContextMenu?

回答

2

我设法显示控件的文本菜单是这样的:

  • 听你的KeyboardEvent(属性键不放例如)在处理程序
  • ,让你的控制(通过名称或任何方法)
  • 当你有你的控制,只需做:myControl.ContextMenu.IsOpen = true;

希望它有帮助。

+0

试过,但这是一个TreeView事件是在TextBlock元素上触发的,该元素是树中的节点,并且没有ContextMenu。这似乎被绑定到更高级的东西上(视觉树?)。 contextMenu是一个TreeView资源。我也尝试将上下文菜单放在TextBlock上,但似乎没有帮助。 – Robert 2010-12-21 09:51:14

+0

这里的问题在于我认为在设置contextMenu的控件上。如果你的事件是在textBlock上触发的,我建议在树状视图中找到具有“ContextMenu”属性的文本块的最近父节点,将contextMenu设置为该控件,然后在事件触发时, visualTree从你的TextBlock中获得这个父控件,并像我建议的那样执行“ContextMenu.IsOpen = true”。我没有看到任何更简单的方法来做到这一点。 – David 2010-12-21 10:13:52