Share via


Procedura: aggiungere un comando a un oggetto MenuItem

Aggiornamento: novembre 2007

Nell'esempio riportato di seguito viene illustrato come impostare MenuItem come origine comando per il comando Paste. Per ulteriori informazioni sui comandi, vedere Cenni preliminari sull'esecuzione di comandi.

Esempio

MenuItem, ad esempio Button e Hyperlink, implementa ICommandSource. Due proprietà esposte da ICommandSource sono Command e CommandTarget. Command è il comando che viene richiamato e CommandTarget è l'elemento in cui ha inizio il routing dell'evento quando viene richiamato il comando. Se non si definisce CommandTarget, l'elemento con lo stato attivo viene impostato come destinazione.

La classe che implementa ICommandSource definisce il comportamento del comando quando viene richiamato. MenuItem e Button definiscono l'evento Click come mezzo per richiamare il comando. Se il comando non può essere eseguito sull'oggetto CommandTarget specifico, MenuItem viene disattivato. Quando il comando può essere eseguito su CommandTarget, MenuItem viene attivato.

In questo esempio, viene creato MenuItem sull'oggetto Window principale dell'applicazione. La proprietà Command viene impostata sul comando Paste. Poiché CommandTarget non è definito su MenuItem, la destinazione del comando sarà l'elemento con lo stato attivo.

Poiché la classe TextBox fornisce la logica per il comando Paste, non è necessario CommandBinding. Se il controllo che gestisce il comando non fornisce la logica per l'esecuzione del comando, è necessario CommandBinding per associare ExecutedRoutedEventHandler e CanExecuteRoutedEventHandler a RoutedCommand.

<Window x:Class="SDKSamples.Window1"
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
    Title="MenuItemCommandTask"
    >
    <DockPanel>
      <Menu DockPanel.Dock="Top">
        <MenuItem Command="ApplicationCommands.Paste" Width="75" />
      </Menu>
      <TextBox BorderBrush="Black" BorderThickness="2" Margin="25"
               TextWrapping="Wrap">
        The MenuItem will not be enabled until
        this TextBox gets keyboard focus  
      </TextBox>
    </DockPanel>
</Window>

Vedere anche

Concetti

Cenni preliminari sull'esecuzione di comandi

Cenni preliminari sull’input

Riferimenti

ApplicationCommands