Comment : créer un TabControl qui possède des ContextMenus
Mise à jour : novembre 2007
Cette rubrique explique comment créer un TabControl et joindre un ContextMenu à chaque TabItem. Lorsqu'un utilisateur clique sur un élément dans le ContextMenu, le TabItem doit gérer l'événement Click. Le gestionnaire peut être ajouté aux éléments ContextMenu, mais vous devez connaître la cible de l'élément ContextMenu pour l'action appropriée à prendre.
L'exemple suivant montre comment effectuer cette opération. Le premier exemple crée un TabItem et joint un ContextMenu au TabItem.
Exemple
<TabItem Name="backgroundcolor" Header="Choose a Background Color">
<TabItem.ContextMenu>
<ContextMenu MenuItem.Click="MyMenuHandler">
<MenuItem Header="Red" Name="red"/>
<MenuItem Header="Blue" Name="blue"/>
<MenuItem Header="Yellow" Name="yellow"/>
</ContextMenu>
</TabItem.ContextMenu>
<TabItem.Content>Some content about background colors.</TabItem.Content>
</TabItem>
Le deuxième exemple indique comment procéder pour qu'un gestionnaire gère les appels d'événement Click.
void MyMenuHandler(object sender, RoutedEventArgs e)
{
ContextMenu cm = (ContextMenu)sender;
target = cm.PlacementTarget;
if(e.Source==red)
{
backgroundcolor.Background = Brushes.Red;
backgroundcolor.Header = "Background red";
}
else if(e.Source==blue)
{
backgroundcolor.Background = Brushes.LightBlue;
backgroundcolor.Header = "Background blue";
}
else if(e.Source==yellow)
{
backgroundcolor.Background = Brushes.Yellow;
backgroundcolor.Header = "Background yellow";
}
}
Remarquez que pour trouver la cible du ContextMenu, vous pouvez utiliser le code de l'exemple précédent ou suivant.
ContextMenu cm = (ContextMenu)ContextMenu.ItemsControlFromItemContainer ((MenuItem)e.OriginalSource);
UIElement placementTarget = cm.PlacementTarget;