WPF에서 View와 ViewModel 연결 방법들
1. Code-Behind에서 직접 설정
MainWindow.xaml.cs:
csharppublic partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainViewModel(); // 직접 연결
}
}
MainWindow.xaml:
xml<Window x:Class="MyApp.MainWindow"
xmlns:local="clr-namespace:MyApp">
<Window.DataContext>
<local:MainViewModel/> <!-- XAML에서 직접 생성 -->
</Window.DataContext>
</Window>
App.xaml:
xml<Application.Resources>
<local:MainViewModel x:Key="MainVM"/>
</Application.Resources>
MainWindow.xaml:
xml<Window DataContext="{StaticResource MainVM}">
csharp// 의존성 주입 컨테이너 설정
services.AddTransient<MainViewModel>();
services.AddTransient<MainWindow>();
// Window 생성 시 자동으로 ViewModel 주입
var mainWindow = serviceProvider.GetService<MainWindow>();
csharppublic class ViewModelLocator
{
public MainViewModel MainVM => new MainViewModel();
public UserViewModel UserVM => new UserViewModel();
}
가장 많이 사용되는 방법:
간단한 앱: Code-Behind에서 직접 설정
복잡한 앱: DI Container 사용
MVVM 프레임워크: Prism, MVVM Light 등의 자동 연결 기능 활용