방법: MenuItem에 명령 추가

업데이트: 2007년 11월

다음 예제에서는 MenuItemPaste 명령의 명령 소스로 설정하는 방법을 보여 줍니다. 명령에 대한 자세한 내용은 명령 개요를 참조하십시오.

예제

ButtonHyperlink 같은 MenuItemICommandSource를 구현합니다. ICommandSourceCommandCommandTarget이라는 두 가지 속성을 노출하는데 Command는 호출할 명령이고 CommandTarget은 명령을 호출했을 때 이벤트 라우팅이 시작되는 요소입니다. CommandTarget을 정의하지 않으면 키보드 포커스가 있는 요소가 대상으로 설정됩니다.

ICommandSource를 구현하는 클래스는 명령이 호출되는 의미를 정의하고 MenuItemButton은 명령을 호출하는 방법으로 Click 이벤트를 정의합니다. 특정 CommandTarget에서 명령을 실행할 수 없으면 MenuItem이 비활성화되고, CommandTarget에서 명령을 실행할 수 있으면 MenuItem이 활성화됩니다.

이 예제에서는 응용 프로그램의 주 WindowMenuItem을 만들고 Command 속성을 Paste 명령으로 설정합니다. 또한 이 예제에서는 MenuItemCommandTarget을 정의하지 않으므로 키보드 포커스가 있는 요소가 명령의 대상입니다.

Paste 명령에 대한 논리는 TextBox 클래스가 제공하기 때문에 CommandBinding을 사용하지 않아도 됩니다. 명령을 처리하는 컨트롤이 명령의 실행 논리를 제공하지 않는 경우에는 CommandBinding을 사용하여 ExecutedRoutedEventHandlerCanExecuteRoutedEventHandlerRoutedCommand에 바인딩해야 합니다.

<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