Übersicht über ContextMenu

Aktualisiert: November 2007

Die ContextMenu-Klasse stellt das Element dar, das durch ein kontextspezifisches Menu Funktionen verfügbar macht. Ein Benutzer ruft in der Regel das ContextMenu in der Benutzeroberfläche (user interface, UI) auf, indem er mit der rechten Maustaste klickt. In diesem Thema wird das ContextMenu-Element eingeführt. Außerdem sind Beispiele für dessen Verwendung in Extensible Application Markup Language (XAML) und Code enthalten.

Dieses Thema enthält folgende Abschnitte.

  • ContextMenu-Steuerelement
  • Erstellen von ContextMenus
  • Anwenden von Formaten auf ein ContextMenu
  • Verwandte Abschnitte

ContextMenu-Steuerelement

ContextMenu ist an ein bestimmtes Steuerelement angefügt. Durch das ContextMenu-Element können Sie Benutzern eine Liste mit Elementen zur Verfügung stellen, die Befehle oder Optionen für ein bestimmtes Steuerelement angeben, z. B. Button. Benutzer klicken mit der rechten Maustaste auf das Steuerelement, damit das Menü angezeigt wird. In der Regel wird durch Klicken auf MenuItem ein Untermenü geöffnet oder ein Befehl durch die Anwendung ausgeführt.

Erstellen von ContextMenus

Im folgenden Beispiel wird das Erstellen von ContextMenu mit Untermenüs veranschaulicht. Die ContextMenu-Steuerelemente sind an Schaltflächen-Steuerelemente angefügt.

<Button Name="cmButton" Height="30">
  Button with Context Menu
  <Button.ContextMenu>
    <ContextMenu Name="cm" Opened="OnOpened" Closed="OnClosed" StaysOpen="true">
      <MenuItem Header="File"/>
      <MenuItem Header="Save"/>
      <MenuItem Header="SaveAs"/>
      <MenuItem Header="Recent Files">
        <MenuItem Header="ReadMe.txt"/>
        <MenuItem Header="Schedule.xls"/>
      </MenuItem>
    </ContextMenu>
  </Button.ContextMenu>
</Button>
Dim btn As New Button()
Dim contextmenu As New ContextMenu()
Dim mi As New MenuItem()
Dim mia As New MenuItem()

btn.Background = Brushes.Red
btn.Height = 30
btn.Content = "Created with Visual Basic."

mi.Header = ("Item 1")
contextmenu.Items.Add(mi)
mia.Header = ("Item 2")
contextmenu.Items.Add(mia)

btn.ContextMenu = (contextmenu)
cv2.Children.Add(btn)
btn = new Button();
btn.Content = "Created with C#";
contextmenu = new ContextMenu();
btn.ContextMenu = contextmenu;
mi = new MenuItem();
mi.Header = "File";
mia = new MenuItem();
mia.Header = "New";
mi.Items.Add(mia);
mib = new MenuItem();
mib.Header = "Open";
mi.Items.Add(mib);
mib1 = new MenuItem();
mib1.Header = "Recently Opened";
mib.Items.Add(mib1);
mib1a = new MenuItem();
mib1a.Header = "Text.xaml";
mib1.Items.Add(mib1a);
contextmenu.Items.Add(mi);
cv2.Children.Add(btn);

Anwenden von Formaten auf ein ContextMenu

Durch die Verwendung von Style für ein Steuerelement können Sie die Darstellung und das Verhalten von ContextMenu eindrucksvoll verändern, ohne dazu ein benutzerdefiniertes Steuerelement schreiben zu müssen. Sie können nicht nur visuelle Eigenschaften festlegen, sondern auch Formate auf Teile eines Steuerelements anwenden. Beispielsweise können Sie das Verhalten von Teilen des Steuerelements anhand von Eigenschaften ändern, zusätzliche Teile zu ContextMenu hinzufügen oder dessen Layout ändern. Die folgenden Beispiele zeigen verschiedene Möglichkeiten auf, wie Sie ContextMenu-Steuerelementen Formate hinzufügen können.

Im ersten Beispiel wird ein Format namens SimpleSysResources definiert, und es wird veranschaulicht, wie die aktuellen Systemeinstellungen im Format verwendet werden. Im Beispiel wird MenuHighlightBrushKey als Background-Farbe und MenuTextBrushKey als Foreground-Farbe von ContextMenu zugewiesen.

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

Im folgenden Beispiel wird das Trigger-Element verwendet, um die Darstellung von Menu als Reaktion auf Ereignisse zu ändern, die in ContextMenu ausgelöst werden. Wenn ein Benutzer die Maus über das Menü bewegt, ändert sich die Darstellung der ContextMenu-Elemente.

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

Siehe auch

Aufgaben

Beispiel für WPF-Steuerelementsammlungen

Konzepte

Beispiel für ein ContextMenu-ControlTemplate

Referenz

ContextMenu

Style

Menu

MenuItem

Weitere Ressourcen

ContextMenu