Freigeben über


Ü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 und Beispiele für die Verwendung in Extensible Application Markup Language (XAML) und Code bereitgestellt.

ContextMenu-Steuerelement

Ein ContextMenu-Element, das an ein spezifisches Steuerelement angefügt wurde. Mit dem ContextMenu-Element können Sie Benutzern eine Liste mit Elementen präsentieren, die Befehle oder Optionen angeben, die einem bestimmten Steuerelement, wie z. B. einer Button, zugeordnet sind. Benutzer klicken mit der rechten Maustaste auf das Steuerelement, um das Menü anzuzeigen. In der Regel öffnet das Klicken auf eine MenuItem ein Untermenü oder bewirkt, dass eine Anwendung einen Befehl durchfü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 eines Steuerelements Stylekönnen Sie das Erscheinungsbild und Verhalten eines ContextMenu erheblich ändern, ohne ein benutzerdefiniertes Steuerelement zu schreiben. Zusätzlich zum Festlegen visueller Eigenschaften können Sie auch Stile auf Teile 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 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