반응형
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#)
MenuItem
의 Click
이벤트를 처리하기 위해 다음과 같이 이벤트 핸들러를 추가할 수 있습니다.
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. 주요 속성 및 기능
Header
속성:- 메뉴 항목의 텍스트를 지정합니다.
- 언더스코어(
_
)를 사용하면 단축키를 설정할 수 있습니다. 예:_File
→ Alt+F로 활성화.
Separator
:- 메뉴를 구분하는 선을 추가합니다.
IsEnabled
속성:- 메뉴 항목을 활성화/비활성화할 수 있습니다.
- 단축키 (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 |
---|