[WPF 부록] View와 ViewModel 연결

soonwoo·2025년 9월 11일

WPF

목록 보기
4/5
post-thumbnail

WPF에서 View와 ViewModel 연결 방법들
1. Code-Behind에서 직접 설정

MainWindow.xaml.cs:
csharppublic partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = new MainViewModel(); // 직접 연결
    }
}
  1. XAML에서 직접 설정
MainWindow.xaml:
xml<Window x:Class="MyApp.MainWindow"
        xmlns:local="clr-namespace:MyApp">
    <Window.DataContext>
        <local:MainViewModel/> <!-- XAML에서 직접 생성 -->
    </Window.DataContext>
</Window>
  1. 정적 리소스로 설정
App.xaml:
xml<Application.Resources>
    <local:MainViewModel x:Key="MainVM"/>
</Application.Resources>
MainWindow.xaml:
xml<Window DataContext="{StaticResource MainVM}">
  1. DI Container 사용 (권장)
    Program.cs / App.xaml.cs:
csharp// 의존성 주입 컨테이너 설정
services.AddTransient<MainViewModel>();
services.AddTransient<MainWindow>();

// Window 생성 시 자동으로 ViewModel 주입
var mainWindow = serviceProvider.GetService<MainWindow>();
  1. ViewModelLocator 패턴
csharppublic class ViewModelLocator
{
    public MainViewModel MainVM => new MainViewModel();
    public UserViewModel UserVM => new UserViewModel();
}

가장 많이 사용되는 방법:

간단한 앱: Code-Behind에서 직접 설정
복잡한 앱: DI Container 사용
MVVM 프레임워크: Prism, MVVM Light 등의 자동 연결 기능 활용

0개의 댓글