如何:向 MenuItem 中添加命令

更新:2007 年 11 月

下面的示例演示如何将 MenuItem 设置为 Paste 命令的命令源。 有关设置命令的更多信息,请参见命令概述

示例

MenuItem(如 ButtonHyperlink)实现 ICommandSourceICommandSource 公开的两个属性是 CommandCommandTargetCommand 是将调用的命令,CommandTarget 是在调用该命令后作为事件传送起点的元素。 如果未定义 CommandTarget,则具有键盘焦点的元素将设置为目标。

实现 ICommandSource 的类定义在什么情况下调用命令。MenuItemButton 定义用作命令调用方式 Click 事件。 如果该命令在特定的 CommandTarget 上无法执行,将禁用 MenuItem。 如果该命令可以在 CommandTarget 上执行,将启用 MenuItem

在本示例中,在应用程序的主 Window 上创建一个 MenuItemCommand 属性设置为 Paste 命令。CommandTarget 未在 MenuItem 上定义;因此,命令的目标将是具有键盘焦点的元素。

因为 TextBox 类为 Paste 命令提供了逻辑,所以 CommandBinding 不是必需的。 如果处理命令的控件没有为命令的执行提供逻辑,则需要 CommandBinding 来将 ExecutedRoutedEventHandlerCanExecuteRoutedEventHandler 绑定到 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