WPF를 조금 오래 다루다 보면 재미있는 패턴 하나를 발견하게 됩니다. 처음에는 Page와 NavigationService를 씁니다.
그러다가 점점 구조가 복잡해지고 결국 어느 순간 이렇게 바뀝니다. Window는 하나만 둡니다.
그리고 중앙에 ContentControl 하나를 둡니다. 그리고 ViewModel을 바꿉니다.
그러면 화면이 바뀝니다. 어느 순간 깨닫게 됩니다.
“이거… 라우터잖아?” 화면 전환의 본질은 결국 "상태 변경" 웹 프레임워크를 보면 화면 전환은 대부분 라우터가 담당합니다.
React도 그렇고 Vue도 그렇고 Angular도 마찬가지입니다. URL이 바뀌면 라우터가 컴포넌트를 바꿉니다.
그런데 WPF는 조금 다릅니다. WPF에서는 URL이 아니라 상태가 바뀝니다.
예를 들어 이런 식입니다. CurrentViewModel = new DashboardViewModel() 이 값이 바뀌면 ContentControl이 다른 View를 보여줍니다.
라우팅처럼 보이지는 ...