Comment : ajouter une commande à un MenuItem

Mise à jour : novembre 2007

L'exemple suivant indique comment installer un MenuItem comme source de la commande Paste. Pour plus d'informations sur l'exécution des commandes, consultez Vue d'ensemble des commandes.

Exemple

MenuItem, comme Button et Hyperlink, implémente ICommandSource. Deux propriétés exposées par ICommandSource sont Command et CommandTarget. Command correspond à la commande appelée et CommandTarget à l'élément où le routage d'événement démarre lors de l'appel de la commande. Si CommandTarget n'est pas défini, l'élément qui a le focus clavier devient la cible.

La classe qui implémente ICommandSource définit les éléments nécessaires pour appeler la commande. MenuItem et Button définissent l'événement Click en tant que moyen d'appeler la commande. Si la commande ne peut pas être exécutée sur le CommandTarget particulier, MenuItem est désactivé. Si la commande peut être exécutée sur CommandTarget, MenuItem est activé.

Dans cet exemple, un MenuItem est créé dans le Window principal de l'application. La propriété Command est définie sur la commande Paste. CommandTarget n'est pas défini dans MenuItem ; par conséquent, la cible de la commande correspond à l'élément qui a le focus clavier.

La classe TextBox fournissant la logique pour la commande Paste, un CommandBinding n'est pas requis. Si le contrôle qui gère la commande ne fournit pas de logique pour l'exécution de la commande, un CommandBinding est requis pour lier ExecutedRoutedEventHandler et CanExecuteRoutedEventHandler à 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>

Voir aussi

Concepts

Vue d'ensemble des commandes

Vue d'ensemble des entrées

Référence

ApplicationCommands