WPF 화면 전환 구조화

단일 창 내에서 콘텐츠를 교체하는 구조를 구현했다.

WPF의 ContentControlDataTemplate을 활용하여 MVVM 패턴 기반의 화면 전환(Navigation) 구조를 구축했다.

핵심 원리를 정리했다.

데이터 타입 기반 화면 매핑

ViewModel의 타입에 따라 대응하는 View를 표시하도록 설정했다.

뷰모델은 뷰의 정보를 직접 참조하지 않고 화면을 전환할 수 있다.

<Window.Resources>
    <!-- HomeViewModel 타입에 HomeView 매핑 -->
    <DataTemplate DataType="{x:Type vm:HomeViewModel}">
        <views:HomeView />
    </DataTemplate>

    <!-- SettingViewModel 타입에 SettingView 매핑 -->
    <DataTemplate DataType="{x:Type vm:SettingViewModel}">
        <views:SettingView />
    </DataTemplate>
</Window.Resources>

뷰모델 상태 제어

뷰모델에서 현재 표시할 객체를 변경하면 WPF 엔진이 화면을 갱신한다.

public class MainViewModel : Notifier
{
    private object _currentView;
    public object CurrentView
    {
        get => _currentView;
        set { _currentView = value; OnPropertyChanged(); }
    }

    // CurrentView를 새로운 뷰모델 객체로 교체하여 화면 전환 수행
    public ICommand ShowHomeCommand => new RelayCommand(() => CurrentView = new HomeViewModel());
}

사용자 경험 분석

콘텐츠 교체 방식은 부드러운 화면 전환을 제공한다.

데스크톱 환경에서 단일 페이지 애플리케이션(SPA)과 유사한 흐름을 구현할 수 있다.

데이터 중심의 내비게이션 로직은 WPF의 효율적인 설계 방식이다.

이 원리를 응용하여 복잡한 화면 흐름을 제어할 수 있는 것 같다.

Author avatar

웨이호프

WordPress creator and blogger.

View all posts