Полагаю, вы хотите, чтобы ContextMenu отображалось только , когда пользователь нажимает на заголовок TabItem, а не на область содержимого TabControl.
Если это так, вы можете определить шаблон для заголовка. Смотрите пример кода ниже.
Примечание:
- Контекстное меню появится только при нажатии на текстовую часть (а не на оставшуюся часть пустой области) заголовка TabItem. Если вы хотите использовать всю область заголовка вкладки, вам нужно изменить шаблон ControlTemplate для TabItem.
Пример кода:
<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>