共用方式為


HOW TO:將命令加入至 MenuItem

更新:2007 年 11 月

下列範例顯示如何設定 MenuItem 當做 Paste 命令的命令來源。如需使用命令的詳細資訊,請參閱命令概觀

範例

MenuItem (例如 ButtonHyperlink) 會實作 ICommandSourceICommandSource 公開的兩個屬性為 CommandCommandTargetCommand 是將叫用的命令,而 CommandTarget 是叫用命令時,事件路由起始的項目。如果沒有定義 CommandTarget,則會將具有鍵盤焦點的項目設為目標。

實作 ICommandSource 的類別會定義它對要叫用的命令代表的意義。MenuItemButton 會定義 Click 事件做為叫用命令的方法。如果命令無法在特定 CommandTarget 上執行,MenuItem 將會停用。當命令可以在 CommandTarget 上執行時,MenuItem 將會啟用。

在這個範例中,應用程式的主要 Window 上會建立 MenuItemCommand 屬性會設定為 Paste 命令。MenuItem 上沒有定義 CommandTarget,因此命令的目標將是具有鍵盤焦點的項目。

由於 TextBox 類別會為 Paste 命令提供邏輯,所以不需要 CommandBinding。如果處理命令的控制項未提供執行命令的邏輯,則需要 CommandBindingExecutedRoutedEventHandlerCanExecuteRoutedEventHandler 繫結至 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