- App.xaml에서 startup, exit 나눠 놓는다.
한번에 시작하면 편하긴하지만 뷰가 헤비해질 수 있으며, 시작과 종료시 메모리관리가 좋음
- startup에서 MainWindow.xaml을 실행시킨다.
<Application x:Class="CameraWPF.App"
xmlns="<http://schemas.microsoft.com/winfx/2006/xaml/presentation>"
xmlns:x="<http://schemas.microsoft.com/winfx/2006/xaml>"
xmlns:local="clr-namespace:CameraWPF"
**Startup="Application_Startup"
Exit="Application_Exit"**>
<Application.Resources>
</Application.Resources>
</Application>
public partial class App : Application
{
private MainWindow _mainWindow;
private MainViewModel _mainViewModel;
private void Application_Startup(object sender, StartupEventArgs e)
{
_mainViewModel = new MainViewModel();
_mainWindow = new MainWindow(_mainViewModel);
_mainWindow.Show();
}
private void Application_Exit(object sender, ExitEventArgs e)
{
}
}
public partial class MainWindow : Window
{
private MainViewModel _mainViewModel;
public MainWindow(MainViewModel mainViewModel)
{
_mainViewModel = mainViewModel;
InitializeComponent();
// 바인딩을 위한 권한
this.DataContext = _mainViewModel;
}
}
기본 바인딩
public class MainViewModel : **INotifyPropertyChanged**
{
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
// View
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}