回答
我相信你希望ContextMenu出現只有當用戶點擊TabItem的標題而不是TabControl的內容區域。
如果是這樣,您可以爲Header定義一個模板。請參閱以下示例代碼。
注:
- 右鍵菜單將只有當你點擊的TabItem標題的文本部分(而不是空白區域的其餘部分)出現。如果您需要整個Tab標題區域,則需要修改TabItem的ControlTemplate。
示例代碼:
<Window x:Class="WpfApplication4.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<DataTemplate x:Key="tabHeaderTemplate">
<ContentPresenter Width="Auto" Content="{TemplateBinding Content}">
<ContentPresenter.ContextMenu>
<ContextMenu>
<MenuItem Header="Close Tab" />
<MenuItem Header="Close Other Tabs" />
<Separator />
<MenuItem Header="New Tab" />
</ContextMenu>
</ContentPresenter.ContextMenu>
</ContentPresenter>
</DataTemplate>
</Window.Resources>
<Grid>
<TabControl>
<TabItem Header="Tab 1"
HeaderTemplate="{StaticResource tabHeaderTemplate}">
<Label>Data for first Tab goes here</Label>
</TabItem>
<TabItem Header="Tab 2"
HeaderTemplate="{StaticResource tabHeaderTemplate}">
<Label>Data for second Tab goes here</Label>
</TabItem>
<TabItem Header="Tab 3">
<Label>Data for third Tab goes here</Label>
</TabItem>
</TabControl>
</Grid>
</Window>
這會導致stackoverflowexception – user156144 2011-04-25 00:00:17
@ user156144,stackoveflowexception由於此代碼?奇怪。 :)。無論如何,這只是一個例子,你可能想用TextBlock或其他東西替換contentPresenter,或者可能想要爲整個ControlTemplate提供TabItem方法。 – publicgk 2011-04-25 11:19:59
我的不好...內容='{TemplateBinding內容}「>給了我一個構建錯誤,所以我取代了整個內容屬性。用Control.Content或其他東西(我不記得)重新插入它解決了這個問題。 – user156144 2011-04-25 15:30:14
這是你所需要的:
代碼:
<TabControl Margin="28,25,57,38" Name="tabControl1">
<TabItem Header="tabItem1" Name="tabItem1">
<TabItem.ContextMenu>
<ContextMenu Name="ct1" >
<MenuItem Name="Item1" Header="Close"/>
<MenuItem Name="Item2" Header="CloseOtherThankThis" />
</ContextMenu>
</TabItem.ContextMenu>
<Grid>
<Label Margin="41,75,22,64" Name="label1">First Tab</Label>
</Grid>
</TabItem>
<TabItem Header="tabItem2" Name="tabItem2">
<TabItem.ContextMenu>
<ContextMenu Name="ct2">
<MenuItem Name="Item3" Header="Close"/>
<MenuItem Name="Item4" Header="CloseOtherThankThis" />
</ContextMenu>
</TabItem.ContextMenu>
</TabItem>
</TabControl>
你說的是在其中應該不存在重複的上下文菜單的情況下?
- 1. TabControl上下文菜單
- 2. 在imagegridview上顯示上下文菜單
- 3. 顯示上下文菜單(標記)
- 4. 在顯示上下文菜單CONTENTEDITABLE格
- 5. Android上下文菜單顯示在onCreate
- 6. 顯示NatTable上下文菜單
- 7. Firefox上下文菜單項不顯示
- 8. 顯示上下文相關子菜單
- 9. 上下文菜單項不顯示
- 10. 顯示不同的上下文菜單
- 11. 全屏顯示上下文菜單WPF
- 12. Modx Wayfinder不同的上下文菜單隻顯示刷新後
- 13. 兩個上下文菜單分享圖標,但只有一個上下文菜單圖標顯示
- 14. 菜單顯示之前的WPF更新上下文菜單項
- 15. 將ToolStripDropDownButton的菜單顯示爲上下文菜單
- 16. 無法使選項菜單..顯示爲上下文菜單Android
- 17. 顯示菜單在上下文菜單的ExtJS
- 18. StyleCop不再顯示「顯示幫助」上下文敏感菜單
- 19. TortoiseSVN不會在文件上顯示上下文菜單
- 20. 下拉菜單應該只顯示顯示成員
- 21. 自上而下菜單不顯示
- 22. 在iPad上不顯示下拉菜單
- 23. 下拉菜單不顯示在IE上
- 24. 下拉菜單不顯示子菜單
- 25. @media下拉菜單 - 顯示菜單
- 26. 在MFC應用程序主機上顯示上下文菜單菜單欄
- 27. IntelliJ Idea只在主顯示屏上打開主菜單,上下文菜單和自動完成功能
- 28. 文本框的上下文菜單以粗體顯示菜單選項
- 29. 銘文顯示了下拉菜單
- 30. 爲表單輸入顯示強制上下文菜單
「當我點擊選項卡上,但不是的TabItem」那是什麼意思? – 2011-04-22 13:32:43