2010-10-14 60 views
7

我想添加一個ContextMenu到WPF中的ListBox中的項目;WPF:如何從網格控件的所有區域打開一個ContextMenu

<ListBox.ItemTemplate> 
    <DataTemplate> 
     <Border>       
      <Grid> 
       <Grid.ContextMenu> 
        <ContextMenu>          
         <MenuItem Header = "Menu item 1"/> 
         <MenuItem Header = "Menu item 2"/> 
         <MenuItem Header = "Menu item 3"/> 
        </ContextMenu> 
       </Grid.ContextMenu> 
        ........ 
        ........ 
      </Grid> 
     </Border> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 

的問題是,該文本菜單將只打開了電網的實際情況下,當點擊,我希望能夠通過點擊列表框項目的任何地方打開菜單。

我應該在其他控件中包裝網格嗎?

+0

見http://stackoverflow.com/questions/13420994/how-to-display-context-menu-for-treeview-item- IN-A-hierarchial數據模板式/ 28310591#28310591 – Contango 2015-02-03 23:15:42

回答

17

自從我完成任何可靠的WPF開發(從應用程序開發轉移到實際的遊戲團隊)已經過去幾個月了。

從內存中,您要設置ContextMenu屬性Border,然後設置Border.Background=Transparent。將背景設置爲透明可確保它將參與命中檢測。

替代解決方案,將確保您Grid元素水平和垂直伸展以適應容器。

...

而且拉ContextMenu作爲一個靜態資源,這樣是會更容易找到在未來/編輯。

希望這有助於(我的記憶不會讓我失望)。

編輯:我已經回答StackOverflow上一個類似的問題之前,請參閱WPF: Displaying a Context Menu for a GridView's Items我的答案。這個答案比較完整,因爲它把重點放在了ListItem

相關問題