Delen via


Menu Overzicht

Met de Menu-klasse kunt u elementen ordenen die zijn gekoppeld aan opdrachten en gebeurtenis-handlers in een hiërarchische volgorde. Elk Menu element bevat een verzameling MenuItem elementen.

Het besturingselement Menu bevat een lijst met items die opdrachten of opties voor een toepassing opgeven. Als u op een MenuItem klikt, wordt meestal een submenu geopend of voert een toepassing een opdracht uit.

Menu's maken

In het volgende voorbeeld wordt een Menu gemaakt om tekst in een TextBoxte bewerken. De Menu bevat MenuItem objecten die gebruikmaken van de eigenschappen Command, IsCheckableen Header en de Checked, Uncheckeden Click gebeurtenissen.

<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

Sneltoetsen zijn tekencombinaties die kunnen worden ingevoerd met het toetsenbord om Menu opdrachten aan te roepen. De snelkoppeling voor Kopiëren is bijvoorbeeld Ctrl+C. Er zijn twee eigenschappen die u kunt gebruiken met sneltoetsen en menu-items:InputGestureText of Command.

InvoerGebaarTekst

In het volgende voorbeeld ziet u hoe u de eigenschap InputGestureText gebruikt om sneltoetstekst toe te wijzen aan MenuItem bedieningselementen. Hiermee wordt alleen de sneltoets in het menu-item weergegeven. De opdracht wordt niet gekoppeld aan de MenuItem. De toepassing moet de invoer van de gebruiker verwerken om de actie uit te voeren.

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

Bevelen

In het volgende voorbeeld wordt getoond hoe u de eigenschap Command kunt gebruiken om de opdrachten Open en Opslaan te koppelen aan de MenuItem besturingselementen. De opdrachteigenschap koppelt niet alleen een opdracht aan een MenuItem, maar levert ook de invoerbewegingstekst die moet worden gebruikt als snelkoppeling.

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

De MenuItem-klasse heeft ook een eigenschap CommandTarget, waarmee het element wordt opgegeven waar de opdracht plaatsvindt. Als CommandTarget niet is ingesteld, ontvangt het element met toetsenbordfocus de opdracht. Zie Overzicht van opdrachtenvoor meer informatie over opdrachten.

Met besturingsstijl kunt u het uiterlijk en gedrag van Menu besturingselementen aanzienlijk wijzigen zonder dat u een aangepast besturingselement hoeft te schrijven. Naast het instellen van visuele eigenschappen kunt u ook een Style toepassen op afzonderlijke onderdelen van een besturingselement, het gedrag van onderdelen van het besturingselement wijzigen via eigenschappen of extra onderdelen toevoegen of de indeling van een besturingselement wijzigen. In de volgende voorbeelden ziet u verschillende manieren om een Style toe te voegen aan een Menu besturingselement.

In het eerste codevoorbeeld wordt een Style met de naam Simple gedefinieerd die laat zien hoe u de huidige systeeminstellingen in uw stijl kunt gebruiken. De code wijst de kleur van de MenuHighlightBrush toe als achtergrondkleur van het menu en de MenuTextBrush als de voorgrondkleur van het menu. Merk op dat u resource-sleutels gebruikt om de borstels toe te wijzen.

<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>

In het volgende voorbeeld worden Trigger elementen gebruikt waarmee u het uiterlijk van een MenuItem kunt wijzigen als reactie op gebeurtenissen die op de Menuplaatsvinden. Wanneer u de muis over de Menubeweegt, worden de voorgrondkleur en de lettertypekenmerken van de menu-items gewijzigd.

<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>

Zie ook