본문 바로가기

Windows/WPF

[ WPF ] Menu - 메뉴 추가하기

반응형

WPF에서 메뉴를 추가하는 방법은 Menu 컨트롤을 사용하는 것입니다. WPF의 Menu 컨트롤은 애플리케이션의 상단에 전형적인 메뉴 바를 추가하거나, 컨텍스트 메뉴를 제공하는 데 사용됩니다. 메뉴 항목은 MenuItem 요소로 정의합니다.

1. 기본적인 메뉴 추가 방법

다음은 간단한 메뉴를 추가하는 예제입니다.

XAML 코드

<Window x:Class="WPFMenuExample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="WPF Menu Example" Height="300" Width="400">
    <Grid>
        <!-- 메뉴 바 -->
        <Menu VerticalAlignment="Top">
            <MenuItem Header="_File"> <!-- Alt+F로 접근 -->
                <MenuItem Header="_New" Click="NewMenu_Click"/>
                <MenuItem Header="_Open" Click="OpenMenu_Click"/>
                <MenuItem Header="_Save" Click="SaveMenu_Click"/>
                <Separator/> <!-- 메뉴 구분선 -->
                <MenuItem Header="E_xit" Click="ExitMenu_Click"/>
            </MenuItem>
            <MenuItem Header="_Edit">
                <MenuItem Header="Undo"/>
                <MenuItem Header="Redo"/>
            </MenuItem>
            <MenuItem Header="_Help">
                <MenuItem Header="About" Click="AboutMenu_Click"/>
            </MenuItem>
        </Menu>
    </Grid>
</Window>

코드 비하인드 (C#)

MenuItemClick 이벤트를 처리하기 위해 다음과 같이 이벤트 핸들러를 추가할 수 있습니다.

using System.Windows;

namespace WPFMenuExample
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void NewMenu_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("New menu clicked!");
        }

        private void OpenMenu_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Open menu clicked!");
        }

        private void SaveMenu_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Save menu clicked!");
        }

        private void ExitMenu_Click(object sender, RoutedEventArgs e)
        {
            this.Close(); // 창 닫기
        }

        private void AboutMenu_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("This is a sample WPF application.");
        }
    }
}

 

2. 컨텍스트 메뉴 추가하기

ContextMenu는 특정 UI 요소에 대해 우클릭했을 때 표시되는 메뉴입니다.

XAML 코드

<Button Content="Right-click me" Width="150" Height="50">
    <Button.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Copy" Click="CopyMenu_Click"/>
            <MenuItem Header="Paste" Click="PasteMenu_Click"/>
        </ContextMenu>
    </Button.ContextMenu>
</Button>

코드 비하인드 (C#)

private void CopyMenu_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show("Copy selected!");
}

private void PasteMenu_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show("Paste selected!");
}

 

3. 주요 속성 및 기능

  1. Header 속성:
    • 메뉴 항목의 텍스트를 지정합니다.
    • 언더스코어(_)를 사용하면 단축키를 설정할 수 있습니다. 예: _File → Alt+F로 활성화.
  2. Separator:
    • 메뉴를 구분하는 선을 추가합니다.
  3. IsEnabled 속성:
    • 메뉴 항목을 활성화/비활성화할 수 있습니다.
  4. 단축키 (InputGesture):
    • 단축키를 추가하려면 InputBinding을 활용하거나 메뉴 항목에 Command를 설정할 수 있습니다.

단축키 예제 (Command 사용)

<MenuItem Header="Save" Command="ApplicationCommands.Save"/>

이렇게 하면 WPF의 기본 커맨드와 연동하여 단축키 (예: Ctrl+S)를 설정할 수 있습니다.


 

4. 결과

위 방법으로 WPF 앱에 메뉴와 컨텍스트 메뉴를 쉽게 추가하고, 이벤트를 통해 원하는 동작을 구현할 수 있습니다. UI를 세련되게 하기 위해 스타일과 템플릿을 적용할 수도 있습니다.

반응형

'Windows > WPF' 카테고리의 다른 글

[ WPF ] WPF 앱과 Windows Forms 앱의 차이점 알아보기  (0) 2024.12.16