方法 : MenuItem にコマンドを追加する

MenuItemPaste コマンドのコマンド ソースとして設定する方法を次の例に示します。 コマンド実行の詳細については、「コマンド実行の概要」を参照してください。

使用例

ButtonHyperlink などの MenuItem は、ICommandSource を実装します。 ICommandSource は、CommandCommandTarget の 2 つのプロパティを公開します。 Command は、呼び出されるコマンドです。CommandTarget は、コマンドが呼び出されたときにイベントのルーティングが開始される要素です。 CommandTarget が定義されていない場合は、キーボード フォーカスが設定されている要素が対象として設定されます。

ICommandSource を実装するクラスは、コマンドを呼び出すことの意味を定義します。 MenuItem および Button は、コマンドを呼び出すための手段として Click イベントを定義します。 特定の CommandTarget でコマンドを実行できない場合、MenuItem は無効になります。 CommandTarget でコマンドを実行できる場合、MenuItem は有効になります。

この例では、アプリケーションのメイン WindowMenuItem が作成されています。 Command プロパティは Paste コマンドに設定されています。 CommandTargetMenuItem で定義されていません。したがって、コマンドの対象は、キーボード フォーカスを持つ要素になります。

TextBox クラスが Paste コマンドのロジックを提供するため、CommandBinding は不要です。 コマンドを処理するコントロールがコマンドの実行のためのロジックを提供しない場合は、ExecutedRoutedEventHandler および CanExecuteRoutedEventHandlerRoutedCommand にバインドするために、CommandBinding が必要です。

<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

概念

コマンド実行の概要

入力の概要