HOW TO:將命令加入至 MenuItem
更新:2007 年 11 月
下列範例顯示如何設定 MenuItem 當做 Paste 命令的命令來源。如需使用命令的詳細資訊,請參閱命令概觀。
範例
MenuItem (例如 Button 和 Hyperlink) 會實作 ICommandSource。ICommandSource 公開的兩個屬性為 Command 和 CommandTarget。Command 是將叫用的命令,而 CommandTarget 是叫用命令時,事件路由起始的項目。如果沒有定義 CommandTarget,則會將具有鍵盤焦點的項目設為目標。
實作 ICommandSource 的類別會定義它對要叫用的命令代表的意義。MenuItem 和 Button 會定義 Click 事件做為叫用命令的方法。如果命令無法在特定 CommandTarget 上執行,MenuItem 將會停用。當命令可以在 CommandTarget 上執行時,MenuItem 將會啟用。
在這個範例中,應用程式的主要 Window 上會建立 MenuItem。Command 屬性會設定為 Paste 命令。MenuItem 上沒有定義 CommandTarget,因此命令的目標將是具有鍵盤焦點的項目。
由於 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>