Übersicht über ContextMenu

Die ContextMenu-Klasse stellt das Element dar, das durch ein kontextspezifisches Menu-Element Funktionen für Benutzer*innen verfügbar macht. Benutzer*innen rufen in der Regel das ContextMenu auf der Benutzeroberfläche durch Klicken mit der rechten Maustaste auf. In diesem Thema wird das ContextMenu-Element vorgestellt. Es enthält außerdem Beispiele für die Verwendung in XAML (Extensible Application Markup Language) und Code.

ContextMenu-Steuerelement

Ein ContextMenu-Element, das an ein spezifisches Steuerelement angefügt wurde. Mit dem ContextMenu-Element können Sie den Benutzer*innen eine Liste von Elementen zur Verfügung stellen, in denen Befehle oder Optionen angegeben sind, die an ein bestimmtes Steuerelement gebunden sind, z. B. ein Button. Das Menü wird mit einem Rechtsklick mit der Maus aufgerufen. In der Regel wird durch Klicken auf ein MenuItem-Element ein Untermenü geöffnet oder ein Befehl durch eine Anwendung ausgeführt.

Erstellen von ContextMenus

Die folgenden Beispiele zeigen, wie ein ContextMenu mit Untermenüs erstellt wird. Die ContextMenu-Steuerelemente werden 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>
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);
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)

Anwenden von Stilen auf ein ContextMenu

Mithilfe des Style eines Steuerelements können Sie die Darstellung und das Verhalten von ContextMenu-Elementen drastisch ändern, ohne ein benutzerdefiniertes Steuerelement schreiben zu müssen. Zusätzlich zur Festlegung von visuellen Eigenschaften können Sie auch Stile auf Teilelemente eines Steuerelements anwenden. Beispielsweise können Sie das Verhalten der Teilelemente des Steuerelements durch die Bearbeitung seiner Eigenschaften beeinflussen. Sie können Teilelemente auch hinzufügen oder das Layout eines ContextMenu-Steuerelements ändern. In den folgenden Beispielen werden mehrere Möglichkeiten zum Hinzufügen von Stilen zu ContextMenu-Steuerelementen gezeigt.

Im ersten Beispiel wird ein Stil mit der Bezeichnung SimpleSysResources definiert. An diesem Beispiel können Sie sehen, wie die aktuellen Systemeinstellungen in Ihrem Stil verwendet werden können. Das Beispiel weist MenuHighlightBrushKey als Background-Farbe und MenuTextBrushKey als Foreground-Farbe für das ContextMenu zu.

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

Das folgende Beispiel verwendet das Trigger-Element, das Ihnen ermöglicht, die Darstellung eines Menu-Elements als Reaktion auf Ereignisse zu ändern, die beim ContextMenu-Element auftreten. Wenn die Benutzer*innen den Mauszeiger über das Menü bewegen, ä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>  

Weitere Informationen