Partager via


Vue d'ensemble de Menu

La classe Menu vous permet d'organiser des éléments associés aux commandes et aux gestionnaires d'événements dans un ordre hiérarchique. Chaque élément Menu contient une collection d'éléments MenuItem.

Cette rubrique comprend les sections suivantes.

  • Contrôle de menu
  • Création de menus
  • MenuItems avec les raccourcis clavier
  • Style de menu
  • Rubriques connexes

Contrôle de menu

Le contrôle Menu présente une liste d'éléments qui spécifient des commandes ou des options pour une application. En général, le fait de cliquer sur MenuItem ouvre un sous-menu ou entraîne l'application à exécuter une commande.

Création de menus

L'exemple suivant montre comment créer un Menu pour manipuler le texte dans une TextBox. Menu contient des objets MenuItem qui utilisent les propriétés Command, IsCheckable et Header, ainsi que les événements Checked, Unchecked et Click.

<Menu>
  <MenuItem Header="_Edit">
    <MenuItem Command="ApplicationCommands.Copy"/>
    <MenuItem Command="ApplicationCommands.Cut"/>
    <MenuItem Command="ApplicationCommands.Paste"/>
  </MenuItem>
  <MenuItem Header="_Font">
    <MenuItem Header="_Bold" IsCheckable="True"
              Checked="Bold_Checked"
              Unchecked="Bold_Unchecked"/>
    <MenuItem Header="_Italic" IsCheckable="True"
              Checked="Italic_Checked"
              Unchecked="Italic_Unchecked"/>
    <Separator/>
    <MenuItem Header="I_ncrease Font Size"
              Click="IncreaseFont_Click"/>
    <MenuItem Header="_Decrease Font Size"
              Click="DecreaseFont_Click"/>
  </MenuItem>
</Menu>
<TextBox Name="textBox1" TextWrapping="Wrap"
         Margin="2">
  The quick brown fox jumps over the lazy dog.
</TextBox>

Private Sub Bold_Checked(ByVal sender As Object, ByVal e As RoutedEventArgs)
    textBox1.FontWeight = FontWeights.Bold
End Sub

Private Sub Bold_Unchecked(ByVal sender As Object, ByVal e As RoutedEventArgs)
    textBox1.FontWeight = FontWeights.Normal
End Sub

Private Sub Italic_Checked(ByVal sender As Object, ByVal e As RoutedEventArgs)
    textBox1.FontStyle = FontStyles.Italic
End Sub

Private Sub Italic_Unchecked(ByVal sender As Object, ByVal e As RoutedEventArgs)
    textBox1.FontStyle = FontStyles.Normal
End Sub

Private Sub IncreaseFont_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    If textBox1.FontSize < 18 Then
        textBox1.FontSize += 2
    End If
End Sub

Private Sub DecreaseFont_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    If textBox1.FontSize > 10 Then
        textBox1.FontSize -= 2
    End If
End Sub

private void Bold_Checked(object sender, RoutedEventArgs e)
{
    textBox1.FontWeight = FontWeights.Bold;
}

private void Bold_Unchecked(object sender, RoutedEventArgs e)
{
    textBox1.FontWeight = FontWeights.Normal;
}

private void Italic_Checked(object sender, RoutedEventArgs e)
{
    textBox1.FontStyle = FontStyles.Italic;
}

private void Italic_Unchecked(object sender, RoutedEventArgs e)
{
    textBox1.FontStyle = FontStyles.Normal;
}

private void IncreaseFont_Click(object sender, RoutedEventArgs e)
{
    if (textBox1.FontSize < 18)
    {
        textBox1.FontSize += 2;
    }
}

private void DecreaseFont_Click(object sender, RoutedEventArgs e)
{
    if (textBox1.FontSize > 10)
    {
        textBox1.FontSize -= 2;
    }
}

Les raccourcis clavier sont des combinaisons de caractères qui peuvent être entrées avec le clavier pour appeler des commandes Menu. Par exemple, le raccourci pour Copier est CTRL+C. Il y a deux propriétés à utiliser avec les raccourcis clavier et les éléments de menu.InputGestureText ou Command.

InputGestureText

L'exemple suivant indique comment utiliser la propriété InputGestureText pour attribuer le texte de raccourci clavier aux contrôles MenuItem. Cette opération place seulement le raccourci clavier dans l'élément de menu. Elle n'associe pas la commande au MenuItem. L'application doit gérer l'entrée de l'utilisateur pour effectuer l'action.

<MenuItem Header="_Cut" InputGestureText="Ctrl+X"/>
<MenuItem Header="_Find" InputGestureText="Ctrl+F"/>

Commande

L'exemple suivant indique comment utiliser la propriété Command pour associer les commandes Ouvrir et Enregistrer aux contrôles MenuItem. Non seulement la propriété de commande associe une commande avec un MenuItem, mais elle fournit également le texte d'opération d'entrée à utiliser comme un raccourci.

<MenuItem Header="_Open" Command="ApplicationCommands.Open"/>
<MenuItem Header="_Save" Command="ApplicationCommands.Save"/>

La classe MenuItem a également une propriété CommandTarget, qui spécifie l'élément où la commande se produit. Si CommandTarget n'est pas défini, l'élément qui a le focus clavier reçoit la commande. Pour plus d'informations sur les commandes, consultez Vue d'ensemble des commandes.

Style de menu

Avec le contrôle de style, vous pouvez modifier considérablement l'apparence et le comportement de contrôles Menu sans devoir écrire un contrôle personnalisé. En plus de définir des propriétés visuelles, vous pouvez également appliquer un Style aux parties individuelles d'un contrôle, modifier le comportement de parties du contrôle à travers des propriétés ou ajouter des parties supplémentaires ou modifier la disposition d'un contrôle. Les exemples suivants indiquent plusieurs façons d'ajouter un Style à un contrôle Menu.

Le premier exemple de code définit un Style appelé Simple qui indique comment utiliser les paramètres système actuels dans votre style. Le code attribue la couleur du MenuHighlightBrush comme couleur d'arrière-plan du menu et le MenuTextBrush comme couleur de premier plan du menu. Remarquez que vous utilisez des clés de ressources pour attribuer les pinceaux.

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

L'exemple suivant utilise des éléments Trigger qui vous permettent de modifier l'apparence d'un MenuItem en réponse aux événements qui se produisent sur le Menu. Lorsque vous pointez la souris sur le Menu, la couleur de premier plan et les caractéristiques de police des éléments de menu changent.

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

Voir aussi

Autres ressources

Galerie de contrôles WPF, exemple (page éventuellement en anglais)