Panoramica sull'oggetto ContextMenu

La ContextMenu classe rappresenta l'elemento che espone la funzionalità usando un oggetto specifico Menudel contesto. In genere, un utente espone ContextMenu nell'interfaccia utente facendo clic con il pulsante destro del mouse. Questo argomento presenta l'elemento ContextMenu e fornisce esempi di come usarlo nel codice XAML (Extensible Application Markup Language).

Controllo ContextMenu

Un ContextMenu oggetto è associato a un controllo specifico. L'elemento ContextMenu consente di presentare agli utenti un elenco di elementi che specificano comandi o opzioni associati a un particolare controllo, ad esempio un oggetto Button. Gli utenti possono fare clic con il pulsante destro del mouse sul controllo per visualizzare il menu. In genere, facendo clic su un MenuItem sottomenu viene aperto un sottomenu o viene eseguita un'applicazione per eseguire un comando.

Creazione di elementi ContextMenu

Negli esempi seguenti viene illustrato come creare un ContextMenu oggetto con sottomenu. I ContextMenu controlli sono collegati ai controlli pulsante.

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

Applicazione di stili a un elemento ContextMenu

Usando un controllo Style, è possibile modificare notevolmente l'aspetto e il comportamento di un oggetto ContextMenu senza scrivere un controllo personalizzato. Oltre a impostare proprietà visive, è anche possibile applicare stili alle parti di un controllo. Ad esempio, è possibile modificare il comportamento delle parti del controllo usando le proprietà oppure aggiungere parti o modificare il layout di un oggetto ContextMenu. Negli esempi seguenti vengono illustrati diversi modi per aggiungere stili ai ContextMenu controlli.

Nel primo esempio viene definito uno stile denominato SimpleSysResources, che illustra come usare le impostazioni di sistema correnti nello stile. Nell'esempio viene MenuHighlightBrushKey assegnato come Background colore e MenuTextBrushKey come Foreground colore dell'oggetto ContextMenu.

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

Nell'esempio seguente viene utilizzato l'elemento Trigger per modificare l'aspetto di un Menu oggetto in risposta agli eventi generati in ContextMenu. Quando un utente sposta il mouse sul menu, cambia l'aspetto degli ContextMenu elementi.

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

Vedi anche