Windows Presentation Foundation(WPF)는 .NET 프레임워크의 일부로, 다양한 UI 요소와 풍부한 사용자 인터페이스를 제공합니다. 오늘은 WPF에서 목록 컨트롤에 대해 깊이 있는 이해를 돕고자 합니다. 목록 컨트롤은 데이터를 표시하고 조작하는 데 핵심적인 역할을 합니다. 이 글에서는 WPF 목록 컨트롤의 종류, 사용 방법, 그리고 실용적인 예제를 단계별로 설명하겠습니다.
1. 목록 컨트롤의 종류
WPF에는 여러 종류의 목록 컨트롤이 있으며, 각기 다른 용도와 기능을 가지고 있습니다. 주요 목록 컨트롤은 다음과 같습니다:
- ListBox: 기본적인 목록을 보여주는 컨트롤로, 사용자가 항목을 선택할 수 있으며 다중 선택도 가능합니다.
- ComboBox: 드롭다운 목록으로, 사용자가 항목을 선택할 수 있는 경량 컨트롤입니다.
- ListView: 데이터 항목들을 다차원적으로 보여주고, 아이콘과 상세 뷰를 지원하는 고급 목록 컨트롤입니다.
- DataGrid: 데이터 표를 기반으로 한 리스트 뷰로, 데이터를 그리드 형식으로 표시하고 조작할 수 있습니다.
2. ListBox 컨트롤 사용하기
ListBox는 WPF에서 가장 기본적인 목록 컨트롤입니다. 사용자는 목록에 항목을 추가하거나 제거할 수 있으며, 선택된 항목을 처리하는 기능도 있습니다. 다음의 단계별 예제를 통해 ListBox를 구현해보겠습니다:
2.1 XAML 코드 작성
<Window x:Class="ListBoxExample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ListBox Example" Height="350" Width="525">
<Grid>
<ListBox Name="myListBox" Height="200" Width="300" SelectionChanged="myListBox_SelectionChanged">
<ListBoxItem>Item 1</ListBoxItem>
<ListBoxItem>Item 2</ListBoxItem>
<ListBoxItem>Item 3</ListBoxItem>
</ListBox>
<Button Name="addButton" Content="추가" Width="75" Height="30" Click="addButton_Click"
VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0,10,10,0"/>
</Grid>
</Window>
위 코드에서는 ListBox를 만들고, 초기 값으로 세 개의 항목을 추가했습니다. 추가 버튼 클릭 시, 새로운 항목을 목록에 추가하도록 설정할 것입니다.
2.2 C# 코드 작성
using System;
using System.Windows;
namespace ListBoxExample
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void addButton_Click(object sender, RoutedEventArgs e)
{
myListBox.Items.Add("새 항목 " + (myListBox.Items.Count + 1));
}
private void myListBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
if (myListBox.SelectedItem != null)
{
MessageBox.Show("선택된 항목: " + myListBox.SelectedItem.ToString());
}
}
}
}
위의 C# 코드에서는 버튼 클릭 시 ListBox에 새로운 항목을 추가하고, 선택된 항목이 변경될 때마다 해당 항목을 메시지 박스로 보여주는 기능을 처리합니다.
3. ComboBox 컨트롤 사용하기
ComboBox는 드롭다운 형식의 목록 컨트롤로, 사용자가 선택할 수 있는 항목들을 보여줍니다. ComboBox를 사용한 간단한 예제를 살펴보겠습니다.
3.1 XAML 코드 작성
<ComboBox Name="myComboBox" Width="200" Height="30" SelectionChanged="myComboBox_SelectionChanged">
<ComboBoxItem>Option 1</ComboBoxItem>
<ComboBoxItem>Option 2</ComboBoxItem>
<ComboBoxItem>Option 3</ComboBoxItem>
</ComboBox>
3.2 C# 코드 작성
private void myComboBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
if (myComboBox.SelectedItem != null)
{
MessageBox.Show("선택된 옵션: " + ((ComboBoxItem)myComboBox.SelectedItem).Content.ToString());
}
}
4. ListView 컨트롤 사용하기
ListView는 복잡한 데이터를 표현하는 데 도움을 주는 매우 유용한 컨트롤입니다. 아이콘, 텍스트, 체크박스 등 다양한 형식으로 데이터를 나타낼 수 있습니다.
4.1 XAML 코드 작성
<ListView Name="myListView" Height="200" Width="300">
<ListView.View>
<GridView>
<GridViewColumn Header="이름" Width="100" DisplayMemberBinding="{Binding Name}"/>
<GridViewColumn Header="나이" Width="100" DisplayMemberBinding="{Binding Age}"/>
</GridView>
</ListView.View>
</ListView>
4.2 데이터 모델 클래스 작성
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
4.3 C# 코드 작성
private void LoadData()
{
var people = new List<Person>()
{
new Person() { Name = "홍길동", Age = 25 },
new Person() { Name = "이몽룡", Age = 30 },
new Person() { Name = "성춘향", Age = 22 }
};
myListView.ItemsSource = people;
}
LoadData 메소드는 ListView에 보여줄 데이터를 설정합니다. 이 메소드를 초기화 메소드에서 호출해주면 됩니다.
5. DataGrid 컨트롤 사용하기
DataGrid는 대량의 데이터를 처리하고 정렬, 필터링, 편집 기능을 제공하며 유용한 컨트롤입니다. DataGrid 사용 예제도 살펴보겠습니다.
5.1 XAML 코드 작성
<DataGrid Name="myDataGrid" AutoGenerateColumns="False" Height="200" Width="400">
<DataGrid.Columns>
<DataGridTextColumn Header="제품명" Binding="{Binding ProductName}" Width="150"/>
<DataGridTextColumn Header="가격" Binding="{Binding Price}" Width="150"/>
</DataGrid.Columns>
</DataGrid>
5.2 데이터 모델 클래스 작성
public class Product
{
public string ProductName { get; set; }
public decimal Price { get; set; }
}
5.3 C# 코드 작성
private void LoadProducts()
{
var products = new List<Product>()
{
new Product() { ProductName = "상품 A", Price = 10000 },
new Product() { ProductName = "상품 B", Price = 20000 }
};
myDataGrid.ItemsSource = products;
}
6. 정리
WPF의 목록 컨트롤은 데이터를 표현하고 사용자가 상호작용할 수 있는 모든 UI의 기초가 됩니다. ListBox, ComboBox, ListView, DataGrid와 같은 다양한 컨트롤을 활용하여 사용자의 요구에 맞게 데이터를 표시하고 조작할 수 있습니다. 여러분의 프로젝트에 이러한 컨트롤을 적용하여 유용한 사용자 인터페이스를 만들어보세요.
코드를 활용하여 여러분만의 WPF 애플리케이션을 쉽게 구축할 수 있으며, 이를 통해 WPF의 기본을 다지고 나아가 더 복잡한 사용자 인터페이스를 설계할 수 있을 것입니다.
WPF의 목록 컨트롤에 대한 이론과 실습을 통해 여러분들도 더욱 강력하고 유연한 애플리케이션을 만들 수 있기를 바랍니다.