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

更新 : 2007 年 11 月

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