C#/WPF

[C# - WPF] 1. WPF 프로젝트를 처음 시작해보자

반나무 2021. 11. 10. 20:14

안녕하세요 반나무입니다.

그래서 WPF, MVVM 어떤건지 대충 이해는 가는데 어떻게 쓰는건가 하면..

1. WPF프로젝트 생성

2. 프로젝트 내부 구조(폴더) 생성

3. 기본 세팅

 

1. WPF 프로젝트를 생성합니다.

 

2. 프로젝트 내부 구조(폴더) 생성

Model, VIew, ViewModel 폴더를 생성하고

View에 MainWindow.Xaml을 넣습니다.

(View에 MainWindow를 넣고 프로젝트를 종료 후 다시 열어야 정상작동합니다,)

 

3. 기본 세팅

1. 64bit로 개발하는것이 웬만해선 좋기 때문에 특별히 32bit개발이 필요한게 아니라면 64bit로 변경합니다.

2. MainViewModel.cs 생성 -> 바인딩 처리

public class MainViewModel : INotifyPropertyChanged
{
    #region 이벤트
    public event PropertyChangedEventHandler PropertyChanged;
    #endregion
    
    #region 생성자
    public class MainViewModel()
    {

    }
    #endregion
    
    #region 메소드
    public void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            // View 
            this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
    #endregion
    
}

3. MainView.xaml.cs 처리

public partial class MainWindow : Window
{
    private MainViewModel _mainViewModel;

    public MainWindow(MainViewModel mainViewModel)
    {
        _mainViewModel = mainViewModel;
        InitializeComponent();
        
        // 바인딩을 위한 권한
        this.DataContext = _mainViewModel;
    }
}

 

4. App.xaml 처리

App.xaml에서 startup, exit를 나눠줍니다.

그 이유는 한번에 시작하면 편하긴 하지만 View가 무거워질 수 있으며, 시작과 종료시 메모리 관리가 좋기 때문입니다.

<Application x:Class="WPF_Tutorial.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>

App.xaml

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)
    {

    }
}

App.xaml.cs

반응형