안녕하세요! 오늘은 WPF 애플리케이션에서 DataGrid를 고급스럽게 활용하는 방법에 대해 알아볼게요. DataGrid는 강력한 데이터 표시와 편집 기능을 제공하며, 다양한 커스터마이징 옵션을 통해 고급 사용자 경험을 제공할 수 있습니다. 😊
1. DataGrid의 주요 기능 이해하기
WPF의 DataGrid는 기본적으로 다음과 같은 기능을 제공합니다:
- 데이터 바인딩: 데이터 소스를 손쉽게 연결 가능
- 컬럼 커스터마이징: 텍스트, 체크박스, 콤보박스 등 다양한 유형의 컬럼 지원
- 정렬 및 필터링: 사용자 인터페이스를 통한 데이터 정렬
- 데이터 편집: 셀 단위 또는 행 단위 편집
2. DataGrid 커스터마이징
(1) 템플릿 컬럼 사용
DataGridTemplateColumn을 사용하면 셀 내부에 커스텀 컨트롤을 추가할 수 있습니다.
<DataGrid AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Actions">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Edit" Command="{Binding EditCommand}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
(2) 스타일링
DataGrid의 스타일을 변경하여 사용자 정의 UI를 만들 수 있습니다.
<DataGrid RowBackground="LightGray" AlternatingRowBackground="White" />
(3) 셀 병합
셀 병합 기능을 구현하려면 CellTemplate과 데이터 변환기를 조합해야 합니다.
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding MergedValue}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
3. DataGrid 성능 최적화
(1) 가상화(Virtualization) 활성화
데이터가 많을 경우 성능을 높이기 위해 가상화를 활성화하세요.
<DataGrid EnableRowVirtualization="True" EnableColumnVirtualization="True" />
(2) 페이징(Paging) 구현
한 번에 로드되는 데이터 양을 제한하여 성능을 개선하세요.
var pagedData = data.Skip(currentPage * pageSize).Take(pageSize);
DataGrid.ItemsSource = pagedData;
(3) 데이터 로드 최적화
ObservableCollection 대신 List를 사용하여 초기 데이터 로드 시간을 단축합니다. 변경 사항이 적은 경우 성능 향상에 효과적입니다.
4. DataGrid와 MVVM 패턴
(1) 명령 바인딩
MVVM 패턴을 활용하면 DataGrid의 사용자 동작을 명령(Command)으로 처리할 수 있습니다.
<DataGrid InputBindings="{Binding SaveCommand}" />
(2) 데이터 유효성 검사
IDataErrorInfo 또는 ValidationRule을 사용하여 입력된 데이터를 유효성 검사할 수 있습니다.
public string this[string columnName] => columnName == "Name" && string.IsNullOrEmpty(Name) ? "Name is required" : null;
5. 고급 기능 구현
(1) 드래그 앤 드롭
행을 드래그하여 순서를 변경하는 기능을 구현할 수 있습니다.
DragDrop.DoDragDrop(dataGridRow, data, DragDropEffects.Move);
(2) 실시간 필터링
CollectionViewSource를 사용하여 사용자 입력에 따라 데이터를 필터링합니다.
CollectionViewSource.GetDefaultView(dataGrid.ItemsSource).Filter = item => ((MyData)item).Name.Contains(filterText);
6. 실무 활용 사례
- ERP 시스템: 대규모 데이터 관리
- 고객 관리 소프트웨어: 고객 정보 표시 및 수정
- 통계 분석 도구: 데이터 시각화 및 정렬
7. 마무리
WPF의 DataGrid는 강력한 기능과 유연한 커스터마이징 옵션을 제공합니다. 오늘 소개한 고급 활용법을 통해 데이터 표시와 편집 기능을 한 단계 업그레이드해보세요! 😊
'C# > WPF' 카테고리의 다른 글
WPF에서 대규모 데이터 렌더링을 위한 가상화 기술 (0) | 2025.01.22 |
---|---|
실시간 데이터 처리: WinForms vs WPF 성능 비교 (1) | 2025.01.21 |
WPF에서 사용자 친화적인 다국어 지원 구현 (1) | 2025.01.21 |
WPF에서 Animations로 동적 UI 구성하기 (0) | 2025.01.17 |
WPF에서 Custom Control 제작하기: 실무 활용 사례 (0) | 2025.01.17 |