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
Concetti
Stili e modelli di ContextMenu