Cómo: Agregar un comando a un elemento de menú

Actualización: noviembre 2007

En el ejemplo siguiente se muestra cómo configurar un control MenuItem como origen de comando para el comando Paste. Para obtener más información sobre los comandos, vea Información general sobre comandos.

Ejemplo

Los controles MenuItem, como Button y Hyperlink, implementan ICommandSource. ICommandSource expone entre otras las propiedades Command y CommandTarget. Command es el comando que se invocará, y CommandTarget es el elemento donde se iniciará el enrutamiento de eventos cuando se invoque el comando. Si no se define CommandTarget, el elemento que tenga el foco de teclado se establecerá como destino.

La clase que implementa ICommandSource define el significado del hecho de invocar el comando. MenuItem y Button definen el evento Click como manera de invocar el comando. Si el comando no se puede ejecutar en la propiedad CommandTarget determinada, MenuItem se deshabilita. Cuando el comando se puede ejecutar en la propiedad CommandTarget, MenuItem se habilita.

En este ejemplo, se crea un control MenuItem en el objeto Window principal de la aplicación. La propiedad Command se establece en el comando Paste. CommandTarget no se define para MenuItem; por consiguiente, el destino del comando será el elemento que tenga el foco de teclado.

Puesto que la clase TextBox proporciona la lógica para el comando Paste, no se requiere un objeto CommandBinding. Si el control que administra el comando no proporciona la lógica para la ejecución del comando, se necesita CommandBinding para enlazar ExecutedRoutedEventHandler y 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>

Vea también

Conceptos

Información general sobre comandos

Información general sobre acciones del usuario

Referencia

ApplicationCommands