WPF에서 뷰 전환(View Switching) 은 여러 방식이 있고, 상황(규모/복잡도/패턴 적용 여부)에 따라 선택하면 된다.
1. CollectionViewSource + CurrentItem 이동
- 개념: CollectionViewSource / ICollectionView를 이용해서 CurrentItem을 바꿔가며 한 DataTemplate 안에서 아이템을 보여줌.
- 장점:
- 정렬/필터링/그룹핑/현재 항목 이동 같은 리스트 시나리오에서 강력.
- MoveCurrentToNext(), MoveCurrentToPrevious() 같은 API 지원.
- 단점:
- 주로 컬렉션 기반 데이터 탐색에 적합 (Master-Detail UI).
- “뷰 교체”라기보다는 “데이터 항목 전환”에 가깝다.
예시 동영상 (Programming WPF(이안그리피스 저) , P267 예제 7-4 참고)
2. ContentControl + DataTemplateSelector (ViewLocator 패턴)
- 개념: ContentControl.Content에 ViewModel을 바인딩하고, DataTemplateSelector나 리소스에 미리 등록된 DataTemplate으로 View를 선택.
- 장점:
- MVVM 순정: ViewModel 교체만 하면 View도 자동 전환.
- 확장성 높음 (새 ViewModel 추가 시 DataTemplate만 추가하면 됨).
- 단점:
- 처음에는 설정이 번거로움.
- 단순한 뷰 토글에는 다소 오버엔지니어링.
3. Visibility 토글 (RadioButton, TabControl, etc.)
- 개념: 뷰를 여러 개 동시에 배치해두고, Visibility=Visible/Collapsed로 보일 것만 표시.
- 장점:
- 구현 단순 (뷰 2~3개 정도라면 코드 몇 줄로 가능).
- UI 전환이 빠름 (컨트롤이 이미 로드되어 있음).
- 단점:
- 메모리 낭비: 보이지 않아도 컨트롤은 살아 있음.
- 뷰가 많아질수록 XAML이 지저분해짐.
- 전환 로직이 ViewModel에 얽히면 유지보수 힘들어짐.
4. NavigationService / Frame (페이지 내비게이션)
- 개념: Frame + Page 조합으로 뷰 전환.
- 장점:
- 브라우저처럼 "앞/뒤로 가기" 지원.
- 페이지 단위로 관리 가능 (대규모 앱 적합).
- 단점:
- MVVM 순정과는 약간 동떨어짐 (Frame.Navigate는 Code-behind 호출).
- NavigationService를 MVVM스럽게 감싸는 추가 작업 필요.
5. RegionManager (Prism, MVVM 프레임워크)
- 개념: Prism 같은 프레임워크에서 RegionManager를 통해 영역별 View를 동적으로 로드.
- 장점:
- 대규모 앱에서 모듈화 쉬움.
- Dependency Injection과 결합해 확장성 높음.
- 단점:
- 학습 곡선 있음.
- 작은 프로젝트에는 오버킬.
정리
- 데이터 탐색 UI (리스트/상세 전환) → CollectionViewSource
- MVVM 순정, ViewModel 기반 전환 → ContentControl + DataTemplateSelector (ViewLocator)
- 간단한 UI 토글 → Visibility 바인딩
- 페이지 단위 이동 → Frame + NavigationService
- 대규모 앱, 모듈화 → Prism RegionManager
'C#(.Net) > WPF' 카테고리의 다른 글
CustomControl에서의 PART_ 네이밍 규칙 (1) | 2025.08.04 |
---|---|
내가 이해한 IOC (TestVPro 프로젝트 진행하면서) (2) | 2025.07.31 |