Condividi tramite


Menù

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.

Screenshot che visualizza un comando Menu con più comandi MenuItem.

Stili e modelli

È possibile modificare l'impostazione predefinita ControlTemplate per assegnare al Menu controllo un aspetto univoco. Per altre informazioni, vedere Che cosa sono gli stili e i modelli? e Come creare un modello per un controllo.

Proprietà Content

Il Menu controllo utilizza la Items proprietà come proprietà del contenuto. Questa proprietà consente di popolare con Menu una raccolta di MenuItem elementi con cui gli utenti possono interagire.

Parti

Il Menu controllo non ha parti denominate.

Quando si crea un ControlTemplate per un Menu, il modello potrebbe contenere un ItemsPresenter all'interno di un ScrollViewer. ItemsPresenter Visualizza ogni elemento nell'oggetto Menu. ScrollViewer consente lo scorrimento all'interno del controllo . ItemsPresenter non è l'elemento figlio diretto di ScrollViewer, è necessario assegnare al ItemsPresenter il nome ItemsPresenter.

Stati di visualizzazione

Nella tabella seguente sono elencati gli stati di visualizzazione per il Menu controllo .

Nome VisualState Nome VisualStateGroup Description
Valido StatiDiValidazione Il controllo usa la Validation classe e la Validation.HasError proprietà associata è false.
FuocoNonValido StatiDiValidazione La proprietà Validation.HasError associata è true quella che ha il controllo dello stato attivo.
Non valido se non focalizzato StatiDiValidazione La Validation.HasError proprietà associata è true quando il controllo non è in focus.

Concetti chiave

I concetti seguenti sono importanti quando si lavora con il Menu controllo .

I tasti di scelta rapida sono combinazioni di caratteri che possono essere inserite con la tastiera per richiamare Menu i comandi. Ad esempio, la scorciatoia per Copia è CTRL+C. Esistono due proprietà da usare con scelte rapide da tastiera e voci di menu,InputGestureText oppure Command.

InputGestureText

Utilizzare la InputGestureText proprietà per assegnare testo di scelta rapida da tastiera ai MenuItem controlli. In questo modo viene inserita solo la scelta rapida da tastiera nella voce di menu. Non associa il comando a MenuItem. L'applicazione deve gestire l'input dell'utente per eseguire l'azione.

Command

Utilizzare la Command proprietà per associare comandi come Apri e Salva ai MenuItem controlli. La proprietà del comando non solo associa un comando a un MenuItem, ma fornisce anche il testo del gesto di input da usare come scorciatoia.

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 focus della tastiera riceve il comando. Per altre informazioni sui comandi, vedere Cenni preliminari sul comando.

Esempi

Negli esempi seguenti viene illustrato come usare il Menu controllo in scenari diversi.

Creazione di menu

Il Menu controllo 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 viene eseguito un comando dall'applicazione.

Nell'esempio seguente viene creato un oggetto Menu per modificare il testo in un oggetto TextBox. Menu contiene oggetti MenuItem che usano le proprietà Command, IsCheckable e Header e gli eventi Checked, Unchecked e 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

Uso di InputGestureText con MenuItems

Nell'esempio seguente viene illustrato come usare la InputGestureText proprietà per assegnare testo di scelta rapida da tastiera ai MenuItem controlli:

<MenuItem Header="_Cut" InputGestureText="Ctrl+X"/>
<MenuItem Header="_Find" InputGestureText="Ctrl+F"/>

Utilizzo della proprietà Command con MenuItems

Nell'esempio seguente viene illustrato come utilizzare la Command proprietà per associare i comandi Open e Save ai MenuItem controlli :

<MenuItem Header="_Open" Command="ApplicationCommands.Open"/>
<MenuItem Header="_Save" Command="ApplicationCommands.Save"/>

Vedere anche