2014-10-27 69 views
0

我正試圖在單擊用戶選擇時爲您提供下拉列表的界面上創建按鈕。上下文菜單似乎是理想的選擇,除非我需要將它顯示在左鍵單擊上,而不僅僅是右鍵單擊。我把下面簡單的代碼這似乎很好地工作:強制打開時上下文菜單命令綁定失敗

Private Sub btn_PredefinedSearch_Click(sender As Object, e As RoutedEventArgs) 
    Dim btn As Button = sender 
    btn.ContextMenu.IsOpen = True 
End Sub 

這只是打開按鈕被點擊時的上下文菜單,起初偉大的工作。但是現在我綁定到路由命令並遇到問題。我有這一切設置,當我右鍵單擊按鈕時,我得到的上下文菜單與一切按預期工作,但當我點擊左鍵我得到的上下文菜單,但一切都被禁用(可用性方法只是允許在任何時候執行所以這不是問題)。

爲什麼它會在右鍵單擊而不是左鍵?有什麼方法可以強制它正常工作嗎?或者我應該使用其他系統?

回答

0

我還沒有嘗試用一個簡單的演示來測試這個,但我記得我以前遇到過這個問題。右擊以顯示ContextMenu時,會自動爲ContextMenu分配/更新PlacementTarget。然而,當左擊時,您必須自己設置IsOpen以彈出ContextMenu,PlacementTarget不會自動設置爲您單擊的UIElement。所以要解決這個問題,只需自己設置PlacementTarget就可以這樣:

Private Sub btn_PredefinedSearch_Click(sender As Object, e As RoutedEventArgs) 
    Dim btn As Button = sender 
    btn.ContextMenu.PlacementTarget = btn;  
    btn.ContextMenu.IsOpen = True 
End Sub 
+1

你是我的新英雄。謝謝! – sfaust 2014-10-28 00:30:05

相關問題