Freigeben über


Übersicht über Menu

Die Menu-Klasse ermöglicht die hierarchische Organisation von Elementen, die Befehlen und Ereignishandlern zugeordnet sind. Jedes Menu-Element enthält eine Auflistung von MenuItem-Elementen.

Dieses Thema enthält folgende Abschnitte.

  • Menu-Steuerelement
  • Erstellen von Menüs
  • MenuItems mit Tastenkombinationen
  • Menüformatierung
  • Verwandte Abschnitte

Das Menu-Steuerelement stellt eine Liste von Elementen dar, die Befehle oder Optionen für eine Anwendung angeben. In der Regel wird durch Klicken auf ein MenuItem ein Untermenü geöffnet oder ein Befehl durch die Anwendung ausgeführt.

Erstellen von Menüs

Im folgenden Beispiel wird ein Menu erstellt, um in einem TextBox Text zu bearbeiten. Menu enthält MenuItem-Objekte, die die Eigenschaften Command, IsCheckable und Header sowie die Ereignisse Checked, Unchecked und Click verwenden.

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

Tastenkombinationen bestehen aus einer Kombination von Zeichen, die mit der Tastatur eingegeben werden können, um Menu-Befehle aufzurufen. Zum Beispiel ist die Tastenkombination für Kopieren STRG+C. Folgende zwei Eigenschaften werden mit Tastenkombinationen und Menüelementen verwendet: InputGestureText oder Command.

InputGestureText

Das folgende Beispiel zeigt die Verwendung der InputGestureText-Eigenschaft, um den MenuItem-Steuerelementen den Tastenkombinationstext zuzuweisen. Dies fügt nur die Tastenkombination im Menüelement ein. Der Befehl wird hierbei nicht dem MenuItem-Steuerelement zugeordnet. Die Anwendung muss anhand der Benutzereingabe die Aktion ausführen.

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

Befehl

Das folgende Beispiel veranschaulicht die Verwendung der Command-Eigenschaft, um die Befehle Öffnen und Speichern den MenuItem-Steuerelementen zuzuordnen. Die Command-Eigenschaft ordnet nicht nur einen Befehl einem MenuItem zu, sondern stellt auch die Eingabe für die InputGestureText-Eigenschaft bereit, die als Tastenkombination verwendet wird.

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

Die MenuItem-Klasse verfügt außerdem über eine CommandTarget-Eigenschaft, die das Element angibt, in dem der Befehl auftritt. Wenn CommandTarget nicht festgelegt ist, wird der Befehl in dem Element übernommen, das über den Tastaturfokus verfügt. Weitere Informationen zu Befehlen finden Sie unter Befehlsübersicht.

Menüformatierung

Anhand der Formatierung von Steuerelementen können Sie die Darstellung und das Verhalten von Menu-Steuerelementen erheblich verändern, ohne dazu ein benutzerdefiniertes Steuerelement erstellen zu müssen. Zusätzlich zur Festlegung von visuellen Eigenschaften können Sie für einzelne Teile eines Steuerelements einen Style anwenden, das Verhalten von Teilen des Steuerelements anhand von Eigenschaften ändern, das Layout eines Steuerelements ändern oder zusätzliche Teile zum Steuerelement hinzufügen. Die folgenden Beispiele veranschaulichen verschiedene Möglichkeiten, einem Menu-Steuerelement einen Style hinzuzufügen.

Das erste Codebeispiel definiert einen Style namens Simple und veranschaulicht, wie die aktuellen Systemeinstellungen im Stil verwendet werden. Der Code weist dem Menü die MenuHighlightBrush-Farbe als Hintergrundfarbe und die MenuTextBrush-Farbe als Vordergrundfarbe zu. Beachten Sie, dass Sie für die Zuweisung der Pinsel Ressourcenschlüssel verwenden.

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

Im folgenden Beispiel werden Trigger-Elemente verwendet, anhand derer Sie die MenuItem-Darstellung als Reaktion auf Ereignisse ändern können, die im Menu ausgelöst werden. Wenn Sie den Mauszeiger über Menu bewegen, ändern sich die Schriftarteneigenschaften und die Vordergrundfarbe im Menüelement.

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

Siehe auch

Weitere Ressourcen

Beispiel für WPF-Steuerelementsammlungen