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 sous-menu ou provoquer l’exécution d’une commande par une application s’ouvre.

Création de menus

L’exemple suivant crée un Menu texte pour manipuler du texte dans un TextBox. Contient Menu des MenuItem objets qui utilisent les Commandpropriétés et IsCheckableHeader les propriétés, ainsi que les événements et Click les CheckedUncheckedévénements.

<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 clavier de la 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é pour affecter du InputGestureText texte contextuel au clavier aux MenuItem contrôles. Cette opération ne fait que placer 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 exécuter 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-t-elle une commande à une MenuItemcommande, mais fournit également le texte de mouvement 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 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 StyleMenu contrôle.

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 assigne la couleur du pinceau MenuHighlightBrush comme couleur d’arrière-plan du menu et celle du pinceau MenuTextBrush comme couleur de premier plan du menu. Notez que vous utilisez des clés de ressource pour assigner 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’une MenuItem 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