Partager via


Vue d’ensemble du menu

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

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

Création de menus

L'exemple suivant crée un Menu pour manipuler du texte dans un TextBox. Les Menu contiennent des MenuItem objets 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 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;
    }
}

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

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

InputGestureText

L'exemple suivant montre comment utiliser la propriété InputGestureText pour attribuer des raccourcis clavier aux commandes MenuItem. Cela place uniquement le raccourci clavier dans l’élément de menu. Il 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 montre comment utiliser la Command propriété pour associer les commandes Ouvrir et Enregistrer aux MenuItem contrôles. Non seulement la propriété de commande associe une commande à une MenuItem, mais elle fournit également le texte de gestuelle d'entrée à utiliser comme raccourci.

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

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

Avec le style de contrôle, vous pouvez changer considérablement l’apparence et le comportement des Menu contrôles sans avoir à écrire un contrôle personnalisé. En plus de définir des propriétés visuelles, vous pouvez également appliquer une Style partie individuelle d’un contrôle, modifier le comportement des parties du contrôle par le biais de propriétés, ou ajouter des parties supplémentaires ou modifier la disposition d’un contrôle. Les exemples suivants illustrent plusieurs façons d’ajouter un Style à un contrôle Menu.

Le premier exemple de code définit un Style appelé Simple qui montre comment utiliser les paramètres système actuels dans votre style. Le code attribue la couleur de MenuHighlightBrush comme couleur d'arrière-plan du menu et la couleur de MenuTextBrush comme couleur de premier plan du menu. Notez que vous utilisez des clés de ressource pour affecter 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 Trigger éléments qui vous permettent de modifier l’apparence d’un MenuItem en réponse aux événements qui se produisent sur le Menu. Lorsque vous déplacez 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