Vue d'ensemble de ContextMenu

Mise à jour : novembre 2007

La classe ContextMenu représente l'élément qui expose les fonctionnalités à l'aide d'un Menu spécifique au contexte. En général, un utilisateur expose le ContextMenu dans l'interface utilisateur (UI) en cliquant avec le bouton droit de la souris. Cette rubrique présente l'élément ContextMenu et fournit des exemples d'utilisation de cet élément dans le XAML (Extensible Application Markup Language) et le code.

Cette rubrique comprend les sections suivantes.

  • Contrôle ContextMenu
  • Création de ContextMenus
  • Application de styles à un ContextMenu
  • Rubriques connexes

Contrôle ContextMenu

Un ContextMenu est associé à un contrôle spécifique. L'élément ContextMenu vous permet de présenter aux utilisateurs une liste d'éléments qui spécifient des commandes ou des options associées à un contrôle particulier, par exemple, un Button. Les utilisateurs cliquent avec le bouton droit sur le contrôle pour afficher le menu. En général, le fait de cliquer sur MenuItem ouvre un sous-menu ou entraîne l'exécution d'une commande par l'application.

Création de ContextMenus

Les exemples suivants indiquent comment créer un ContextMenu avec des sous-menus. Les contrôles ContextMenu sont associés aux contrôles bouton.

<Button Name="cmButton" Height="30">
  Button with Context Menu
  <Button.ContextMenu>
    <ContextMenu Name="cm" Opened="OnOpened" Closed="OnClosed" StaysOpen="true">
      <MenuItem Header="File"/>
      <MenuItem Header="Save"/>
      <MenuItem Header="SaveAs"/>
      <MenuItem Header="Recent Files">
        <MenuItem Header="ReadMe.txt"/>
        <MenuItem Header="Schedule.xls"/>
      </MenuItem>
    </ContextMenu>
  </Button.ContextMenu>
</Button>
Dim btn As New Button()
Dim contextmenu As New ContextMenu()
Dim mi As New MenuItem()
Dim mia As New MenuItem()

btn.Background = Brushes.Red
btn.Height = 30
btn.Content = "Created with Visual Basic."

mi.Header = ("Item 1")
contextmenu.Items.Add(mi)
mia.Header = ("Item 2")
contextmenu.Items.Add(mia)

btn.ContextMenu = (contextmenu)
cv2.Children.Add(btn)
btn = new Button();
btn.Content = "Created with C#";
contextmenu = new ContextMenu();
btn.ContextMenu = contextmenu;
mi = new MenuItem();
mi.Header = "File";
mia = new MenuItem();
mia.Header = "New";
mi.Items.Add(mia);
mib = new MenuItem();
mib.Header = "Open";
mi.Items.Add(mib);
mib1 = new MenuItem();
mib1.Header = "Recently Opened";
mib.Items.Add(mib1);
mib1a = new MenuItem();
mib1a.Header = "Text.xaml";
mib1.Items.Add(mib1a);
contextmenu.Items.Add(mi);
cv2.Children.Add(btn);

Application de styles à un ContextMenu

En utilisant un Style de contrôle, vous pouvez modifier radicalement l'apparence et le comportement d'un ContextMenu sans écrire un contrôle personnalisé. Outre la définition de propriétés visuelles, vous pouvez également appliquer des styles aux parties d'un contrôle. Par exemple, vous pouvez modifier le comportement de parties du contrôle en utilisant des propriétés, ou vous pouvez ajouter des parties à un ContextMenu ou modifier la disposition de ce dernier. Les exemples suivants indiquent plusieurs façons d'ajouter des styles à des contrôles ContextMenu.

Le premier exemple définit un style appelé SimpleSysResources, qui indique comment utiliser les paramètres système actifs dans votre style. L'exemple assigne MenuHighlightBrushKey comme couleur Background et MenuTextBrushKey comme couleur Foreground du ContextMenu.

<Style x:Key="SimpleSysResources" TargetType="{x:Type MenuItem}">
  <Setter Property = "Background" Value= 
    "{DynamicResource {x:Static SystemColors.MenuHighlightBrushKey}}"/>
  <Setter Property = "Foreground" Value= 
    "{DynamicResource {x:Static SystemColors.MenuTextBrushKey}}"/>
</Style>

L'exemple suivant utilise l'élément Trigger pour modifier l'apparence d'un Menu en réponse aux événements déclenchés sur le ContextMenu. Lorsqu'un utilisateur déplace la souris sur le menu, l'apparence des éléments du ContextMenu change.

<Style x:Key="Triggers" TargetType="{x:Type MenuItem}">
  <Style.Triggers>
    <Trigger Property="MenuItem.IsMouseOver" Value="true">
      <Setter Property = "FontSize" Value="16"/>
      <Setter Property = "FontStyle" Value="Italic"/>
      <Setter Property = "Foreground" Value="Red"/>
    </Trigger>
  </Style.Triggers>
</Style>

Voir aussi

Tâches

Galerie de contrôles WPF, exemple

Concepts

ContextMenu ControlTemplate, exemple

Référence

ContextMenu

Style

Menu

MenuItem

Autres ressources

ContextMenu