Condividi tramite


Cenni preliminari sull'oggetto ContextMenu

La classe ContextMenu rappresenta l'elemento che espone le funzionalità utilizzando un oggetto Menu specifico del contesto. In genere, un utente espone ContextMenu nell'user interface (UI) facendo clic con il pulsante destro del mouse. In questo argomento viene presentato l'elemento ContextMenu e vengono forniti alcuni esempi di utilizzo in Extensible Application Markup Language (XAML) e nel codice.

Nel presente argomento sono contenute le seguenti sezioni.

  • Controllo ContextMenu
  • Creazione di ContextMenu
  • Applicazione di stili a ContextMenu
  • Argomenti correlati

Controllo ContextMenu

ContextMenu viene associato a un controllo specifico. L'elemento ContextMenu consente di visualizzare un elenco di elementi che specificano opzioni o comandi associati a un particolare controllo, quale ad esempio Button. Per visualizzare il menu, occorre fare clic con il pulsante destro del mouse sul controllo. In genere, quando si fa clic su un oggetto MenuItem viene aperto un sottomenu oppure si esegue un comando in un'applicazione.

Creazione di ContextMenu

Nei seguenti esempi viene illustrato come creare un oggetto ContextMenu con vari sottomenu. I controlli ContextMenu sono associati a pulsanti.

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

Applicazione di stili a ContextMenu

Utilizzando un oggetto Style di un controllo, è possibile modificare in modo significativo l'aspetto e il comportamento di ContextMenu senza alcuna necessità di scrivere un controllo personalizzato. Oltre a impostare proprietà visive, è anche possibile applicare stili a parti di un controllo. Ad esempio, è possibile modificare il comportamento di parti del controllo utilizzando le proprietà oppure aggiungere altre parti o modificare il layout di ContextMenu. Nei seguenti esempi vengono illustrati diversi metodi per aggiungere gli stili ai controlli ContextMenu.

Nel primo esempio viene definito uno stile denominato SimpleSysResources, in cui viene illustrato come utilizzare le impostazioni di sistema correnti nello stile. Nell'esempio vengono assegnati MenuHighlightBrushKey come colore di Background e MenuTextBrushKey come colore di Foreground per 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 successivo viene utilizzato l'elemento Trigger per modificare l'aspetto di Menu in risposta a eventi generati in ContextMenu. Quando un utente sposta il mouse sul menu, l'aspetto degli elementi di ContextMenu viene modificato.

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

Vedere anche

Riferimenti

ContextMenu

Style

Menu

MenuItem

Concetti

Stili e modelli di ContextMenu

Altre risorse

ContextMenu

Esempio di raccolta di controlli WPF