Как добавить команду в MenuItem

Обновлен: Ноябрь 2007

Следующем пример показывает, как настроить объект MenuItem в качестве источника командной строки для команды Paste. Для получения дополнительных сведений о командной строке см. Общие сведения о системе команд.

Пример

Объект MenuItem, такой как Button и Hyperlink, реализует объект ICommandSource. Два свойства, которые предоставляет ICommandSource, — Command и CommandTarget. Свойство Command является командой, которая будет вызываться, а свойство CommandTarget является элементом, где будет запускаться маршрутизация событий при вызове команды. Если свойство CommandTarget не определено, элемент, который имеет фокус ввода, будет установлен в качестве цели.

Реализация класса ICommandSource определяет, что команда будет вызвана. Объекты MenuItem и Button определяют событие Click как средство для вызова команды. Если команда не может быть выполнена для отдельного свойства CommandTarget, объект MenuItem будет отключен. Если команда может быть выполнена для свойства CommandTarget, объект MenuItem будет включен.

В этом примере объект MenuItem создается в главном объекте Window приложения. Свойству Command присвоена командаPaste. Свойство CommandTarget не определено для объекта MenuItem; поэтому целью команды будет элемент, имеющий фокус ввода.

Поскольку класс TextBox предоставляет логику для команды Paste, объект CommandBinding не требуется. Если элемент управления, обрабатывающий команду, не предоставляет логику для выполнения команды, объект CommandBinding требуется для связывания ExecutedRoutedEventHandler и 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>

См. также

Основные понятия

Общие сведения о системе команд

Общие сведения о входных данных

Ссылки

ApplicationCommands