WPF에서 DataTemplate
과 ItemsControl
을 활용하는 것은 UI에서 데이터 컬렉션을 효율적으로 표시하는 데 매우 유용합니다. 이를 통해 데이터를 UI에 바인딩하고, 사용자 정의된 템플릿으로 표시할 수 있습니다. 아래에 DataTemplate
과 ItemsControl
을 사용하는 방법을 단계별로 설명하겠습니다.
1. 기본 개념 이해하기
- ItemsControl: 컬렉션 데이터를 표시하는 컨트롤입니다.
ListBox
,ComboBox
,ListView
등도ItemsControl
에서 파생된 컨트롤입니다. - DataTemplate: 데이터를 표시할 때 사용할 템플릿을 정의합니다. 예를 들어, 데이터가
Person
이라는 클래스의 인스턴스라면,DataTemplate
을 사용해 이름과 나이를 화면에 표시할 수 있습니다.
2. 기본적인 모델 클래스 생성
먼저, 예제로 사용할 간단한 모델 클래스를 정의하겠습니다. Person
이라는 클래스에는 이름과 나이 속성이 있습니다.
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
3. XAML에서 ItemsControl과 DataTemplate 정의하기
이제 XAML 파일에서 ItemsControl
과 DataTemplate
을 정의합니다.
<Window x:Class="WpfApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="DataTemplate Example" Height="350" Width="525">
<Grid>
<ItemsControl Name="personItemsControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="5">
<TextBlock Text="{Binding Name}" FontWeight="Bold" Width="100"/>
<TextBlock Text="{Binding Age}" Width="50"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Window>
4. 코드 비하인드에서 데이터 바인딩
이제, MainWindow.xaml.cs
파일에서 ItemsControl
에 데이터를 바인딩합니다.
using System.Collections.Generic;
using System.Windows;
namespace WpfApp
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<Person> people = new List<Person>
{
new Person { Name = "John", Age = 30 },
new Person { Name = "Jane", Age = 25 },
new Person { Name = "Sam", Age = 40 }
};
personItemsControl.ItemsSource = people;
}
}
}
5. 실행 결과
위의 코드를 실행하면 ItemsControl
이 List<Person>
의 데이터를 받아 각 항목을 DataTemplate
에 따라 화면에 표시합니다. 각 Person
객체는 이름과 나이로 표시되며, StackPanel
로 수평 정렬되어 출력됩니다.
6. 추가적인 커스터마이징
만약 Person
클래스에 추가 속성이 있다면 DataTemplate
을 수정하여 더 많은 정보를 표시할 수 있습니다. 예를 들어, 직업을 추가하려면:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Job { get; set; } // 새로운 속성 추가
}
XAML에서 이를 반영:
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="5">
<TextBlock Text="{Binding Name}" FontWeight="Bold" Width="100"/>
<TextBlock Text="{Binding Age}" Width="50"/>
<TextBlock Text="{Binding Job}" Width="100"/>
</StackPanel>
</DataTemplate>
코드 비하인드에서 데이터를 추가:
List<Person> people = new List<Person>
{
new Person { Name = "John", Age = 30, Job = "Engineer" },
new Person { Name = "Jane", Age = 25, Job = "Designer" },
new Person { Name = "Sam", Age = 40, Job = "Manager" }
};
결론
ItemsControl
과 DataTemplate
을 함께 사용하면 데이터를 유연하고 아름답게 표시할 수 있습니다. 위의 예제에서 보았듯이, 각 데이터 객체는 템플릿을 통해 사용자 정의된 방식으로 표시되며, 매우 직관적이고 강력한 기능을 제공합니다.
'Frontend > WPF' 카테고리의 다른 글
[WPF] 레이아웃 컨트롤 탐색하기: Grid, StackPanel, DockPanel 등 (0) | 2024.08.14 |
---|---|
[WPF] Prism 사용 시 Mock-up 활용하는 방법 (0) | 2024.08.12 |
WPF(Windows Presentation Foundation) 이해하기 (0) | 2024.06.20 |
[WPF] KeyBinding 사용하여 단축키 설정하기 (1) | 2024.06.18 |
[WPF] 문자열(string)의 가로 세로 길이 계산 (0) | 2023.04.18 |
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!