Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La classe Menu consente di organizzare gli elementi associati ai comandi e ai gestori eventi in un ordine gerarchico. Ogni elemento Menu contiene una raccolta di elementi MenuItem.
Controllo menu
Il controllo Menu presenta un elenco di elementi che specificano comandi o opzioni per un'applicazione. In genere, facendo clic su un MenuItem si apre un sottomenu o si determina l'esecuzione di un comando da parte di un'applicazione.
Creazione di menu
Nell'esempio seguente viene creato un Menu per modificare il testo in un TextBox. L'Menu contiene oggetti MenuItem che utilizzano le proprietà Command, IsCheckablee Header e gli eventi Checked, Uncheckede Click.
<Menu>
<MenuItem Header="_Edit">
<MenuItem Command="ApplicationCommands.Copy"/>
<MenuItem Command="ApplicationCommands.Cut"/>
<MenuItem Command="ApplicationCommands.Paste"/>
</MenuItem>
<MenuItem Header="_Font">
<MenuItem Header="_Bold" IsCheckable="True"
Checked="Bold_Checked"
Unchecked="Bold_Unchecked"/>
<MenuItem Header="_Italic" IsCheckable="True"
Checked="Italic_Checked"
Unchecked="Italic_Unchecked"/>
<Separator/>
<MenuItem Header="I_ncrease Font Size"
Click="IncreaseFont_Click"/>
<MenuItem Header="_Decrease Font Size"
Click="DecreaseFont_Click"/>
</MenuItem>
</Menu>
<TextBox Name="textBox1" TextWrapping="Wrap"
Margin="2">
The quick brown fox jumps over the lazy dog.
</TextBox>
private void Bold_Checked(object sender, RoutedEventArgs e)
{
textBox1.FontWeight = FontWeights.Bold;
}
private void Bold_Unchecked(object sender, RoutedEventArgs e)
{
textBox1.FontWeight = FontWeights.Normal;
}
private void Italic_Checked(object sender, RoutedEventArgs e)
{
textBox1.FontStyle = FontStyles.Italic;
}
private void Italic_Unchecked(object sender, RoutedEventArgs e)
{
textBox1.FontStyle = FontStyles.Normal;
}
private void IncreaseFont_Click(object sender, RoutedEventArgs e)
{
if (textBox1.FontSize < 18)
{
textBox1.FontSize += 2;
}
}
private void DecreaseFont_Click(object sender, RoutedEventArgs e)
{
if (textBox1.FontSize > 10)
{
textBox1.FontSize -= 2;
}
}
Private Sub Bold_Checked(ByVal sender As Object, ByVal e As RoutedEventArgs)
textBox1.FontWeight = FontWeights.Bold
End Sub
Private Sub Bold_Unchecked(ByVal sender As Object, ByVal e As RoutedEventArgs)
textBox1.FontWeight = FontWeights.Normal
End Sub
Private Sub Italic_Checked(ByVal sender As Object, ByVal e As RoutedEventArgs)
textBox1.FontStyle = FontStyles.Italic
End Sub
Private Sub Italic_Unchecked(ByVal sender As Object, ByVal e As RoutedEventArgs)
textBox1.FontStyle = FontStyles.Normal
End Sub
Private Sub IncreaseFont_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
If textBox1.FontSize < 18 Then
textBox1.FontSize += 2
End If
End Sub
Private Sub DecreaseFont_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
If textBox1.FontSize > 10 Then
textBox1.FontSize -= 2
End If
End Sub
Voci di menu con Scorciatoie da tastiera
I tasti di scelta rapida sono combinazioni di caratteri che possono essere immesse con la tastiera per richiamare i comandi Menu. Ad esempio, il collegamento per Copia è CTRL+C. Esistono due proprietà da usare con i tasti di scelta rapida e le voci di menu,InputGestureText o Command.
InputGestureText
Nell'esempio seguente viene illustrato come utilizzare la proprietà InputGestureText per assegnare testo di scelta rapida da tastiera ai controlli MenuItem. In questo modo viene inserita solo la scelta rapida da tastiera nella voce di menu. Non associa il comando al simbolo MenuItem. L'applicazione deve gestire l'input dell'utente per eseguire l'azione.
<MenuItem Header="_Cut" InputGestureText="Ctrl+X"/>
<MenuItem Header="_Find" InputGestureText="Ctrl+F"/>
Comando
Nell'esempio seguente viene illustrato come utilizzare la proprietà
<MenuItem Header="_Open" Command="ApplicationCommands.Open"/>
<MenuItem Header="_Save" Command="ApplicationCommands.Save"/>
La classe MenuItem ha anche una proprietà CommandTarget, che specifica l'elemento in cui si verifica il comando. Se CommandTarget non è impostato, l'elemento con lo stato attivo della tastiera riceve il comando. Per altre informazioni sui comandi, vedere Panoramica dei comandi.
Applicazione di stili di menu
Con lo stile dei controlli, è possibile modificare notevolmente l'aspetto e il comportamento dei controlli Menu senza dover scrivere un controllo personalizzato. Oltre a impostare le proprietà visive, è anche possibile applicare un Style a singole parti di un controllo, modificare il comportamento delle parti del controllo tramite proprietà oppure aggiungere altre parti o modificare il layout di un controllo. Gli esempi seguenti illustrano diversi modi per aggiungere un Style a un controllo Menu.
Il primo esempio di codice definisce un Style denominato Simple
che mostra come usare le impostazioni di sistema correnti nel tuo stile. Il codice assegna il colore del MenuHighlightBrush
come colore di sfondo del menu e il MenuTextBrush
come colore di primo piano del menu. Si noti che si usano chiavi di risorsa per assegnare i pennelli.
<Style x:Key="Simple" TargetType="{x:Type MenuItem}">
<Setter Property = "Background" Value= "{DynamicResource {x:Static SystemColors.MenuHighlightBrushKey}}"/>
<Setter Property = "Foreground" Value= "{DynamicResource {x:Static SystemColors.MenuTextBrushKey}}"/>
<Setter Property = "Height" Value= "{DynamicResource {x:Static SystemParameters.CaptionHeightKey}}"/>
</Style>
Nell'esempio seguente vengono usati Trigger elementi che consentono di modificare l'aspetto di un MenuItem in risposta agli eventi che si verificano nel Menu. Quando si sposta il mouse sulla Menu, il colore di primo piano e le caratteristiche del carattere delle voci di menu cambiano.
<Style x:Key="Triggers" TargetType="{x:Type MenuItem}">
<Style.Triggers>
<Trigger Property="MenuItem.IsMouseOver" Value="true">
<Setter Property = "Foreground" Value="Red"/>
<Setter Property = "FontSize" Value="16"/>
<Setter Property = "FontStyle" Value="Italic"/>
</Trigger>
</Style.Triggers>
</Style>
Vedere anche
.NET Desktop feedback