方法 : MenuItem にコマンドを追加する
更新 : 2007 年 11 月
MenuItem を Paste コマンドのコマンド ソースとして設定する方法を次の例に示します。コマンド実行の詳細については、「コマンド実行の概要」を参照してください。
使用例
Button や Hyperlink などの MenuItem は、ICommandSource を実装します。ICommandSource は、Command と CommandTarget の 2 つのプロパティを公開します。Command は、呼び出されるコマンドです。CommandTarget は、コマンドが呼び出されたときにイベントのルーティングが開始される要素です。CommandTarget が定義されていない場合は、キーボード フォーカスが設定されている要素が対象として設定されます。
ICommandSource を実装するクラスは、コマンドを呼び出すことの意味を定義します。MenuItem および Button は、コマンドを呼び出すための手段として Click イベントを定義します。特定の CommandTarget でコマンドを実行できない場合、MenuItem は無効になります。CommandTarget でコマンドを実行できる場合、MenuItem は有効になります。
この例では、アプリケーションのメイン Window で MenuItem が作成されています。Command プロパティは Paste コマンドに設定されています。CommandTarget は MenuItem で定義されていません。したがって、コマンドの対象は、キーボード フォーカスを持つ要素になります。
TextBox クラスが Paste コマンドのロジックを提供するため、CommandBinding は不要です。コマンドを処理するコントロールがコマンドの実行のためのロジックを提供しない場合は、ExecutedRoutedEventHandler および CanExecuteRoutedEventHandler を RoutedCommand にバインドするために、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>