Panoramica sulla classe Menu
La Menu classe consente di organizzare gli elementi associati ai comandi e ai gestori eventi in un ordine gerarchico. Ogni Menu elemento contiene una raccolta di MenuItem elementi.
Controllo Menu
Il Menu controllo presenta un elenco di elementi che specificano comandi o opzioni per un'applicazione. In genere, facendo clic su un MenuItem sottomenu viene aperto un sottomenu o viene eseguita un'applicazione per eseguire un comando.
Creazione di menu
Nell'esempio seguente viene creato un oggetto Menu per modificare il testo in un oggetto TextBox. Menu Contiene MenuItem oggetti che usano le Commandproprietà , IsCheckablee Header e gli Checkedeventi , 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
MenuItems con abbreviazioni da tastiera
I tasti di scelta rapida sono combinazioni di caratteri che possono essere immesse con la tastiera per richiamare Menu i comandi. Il collegamento per Copia ad esempio è 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 InputGestureText proprietà per assegnare testo di scelta rapida da tastiera ai MenuItem controlli. In questo modo nella voce di menu vengono inserite solo le abbreviazioni da tastiera. Non associa il comando a 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 Command proprietà per associare i comandi Open e Save ai MenuItem controlli . Non solo la proprietà del comando associa un comando a un MenuItemoggetto , ma fornisce anche il testo del movimento di input da usare come collegamento.
<MenuItem Header="_Open" Command="ApplicationCommands.Open"/>
<MenuItem Header="_Save" Command="ApplicationCommands.Save"/>
La MenuItem classe dispone inoltre di una CommandTarget proprietà 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 Cenni preliminari sull'esecuzione di comandi.
Applicazione di stili al testo
Con lo stile dei controlli, è possibile modificare notevolmente l'aspetto e il comportamento dei Menu controlli senza dover scrivere un controllo personalizzato. Oltre a impostare le proprietà visive, è anche possibile applicare un a Style 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 oggetto Style a un Menu controllo .
Il primo esempio di codice definisce un Style oggetto denominato Simple
che mostra come usare le impostazioni di sistema correnti nello stile. Il codice assegna il colore di MenuHighlightBrush
come colore di sfondo del menu e MenuTextBrush
come colore di primo piano del menu. Si noti l'uso delle 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 Trigger usati elementi che consentono di modificare l'aspetto di un MenuItem oggetto in risposta agli eventi che si verificano in Menu. Quando si sposta il mouse su 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>
Vedi anche
.NET Desktop feedback