2010-12-19 95 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