C#

# WPF MVVM 패턴 완벽 가이드

samie 2025. 3. 26. 12:10

 

C# WPF MVVM 패턴 완벽 가이드

MVVM(Model-View-ViewModel)은 WPF(Windows Presentation Foundation) 애플리케이션을 개발할 때 자주 사용하는 디자인 패턴입니다. UI와 비즈니스 로직을 분리하여 유지보수성을 높이고, 코드의 재사용성을 극대화할 수 있습니다.

1. MVVM 패턴이란?

MVVM은 세 가지 주요 컴포넌트로 구성됩니다:

  • Model: 애플리케이션의 데이터와 비즈니스 로직을 담당
  • View: UI(User Interface)를 담당
  • ViewModel: View와 Model을 연결하는 중간 계층으로, 바인딩과 커맨드를 관리

MVVM 패턴의 장점

  • UI와 비즈니스 로직을 분리하여 유지보수 및 테스트가 용이
  • 데이터 바인딩을 활용하여 UI 코드를 최소화
  • 의존성을 줄여 코드의 재사용성 증가

2. MVVM 패턴 적용 방법

MVVM 패턴을 적용하는 기본적인 방법을 살펴보겠습니다.

(1) Model 클래스

Model은 애플리케이션의 데이터 구조를 정의합니다.

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

(2) ViewModel 클래스

ViewModel은 View와 Model을 연결하는 역할을 합니다. 데이터 바인딩을 위해 INotifyPropertyChanged 인터페이스를 구현해야 합니다.

using System.ComponentModel;

public class PersonViewModel : INotifyPropertyChanged
{
    private string _name;
    public string Name
    {
        get { return _name; }
        set
        {
            _name = value;
            OnPropertyChanged("Name");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

(3) View (XAML)

View에서는 DataContext를 설정하여 ViewModel과 바인딩합니다.

<Window x:Class="MVVMExample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MVVM Example" Height="200" Width="300">
    <Grid>
        <TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" Width="200" Height="30" />
    </Grid>
</Window>

3. MVVM 패턴을 활용한 프로젝트 구조

MVVM 패턴을 적용한 프로젝트는 일반적으로 다음과 같은 폴더 구조를 가집니다.

📂 MVVMExample
 ┣ 📂 Models
 ┃ ┗ 📜 Person.cs
 ┣ 📂 ViewModels
 ┃ ┗ 📜 PersonViewModel.cs
 ┣ 📂 Views
 ┃ ┗ 📜 MainWindow.xaml
 ┣ 📜 App.xaml
 ┗ 📜 MainWindow.xaml.cs

4. MVVM 패턴을 더욱 효과적으로 활용하는 팁

  • RelayCommand를 활용하여 버튼 클릭 이벤트 처리
  • Dependency Injection(DI)로 ViewModel을 관리
  • MVVM 프레임워크(Prism, MVVMLight)를 활용하여 개발 효율성 극대화

5. 마무리

MVVM 패턴을 활용하면 WPF 애플리케이션의 유지보수성, 확장성이 크게 향상됩니다. 이번 글에서는 MVVM 개념, 장점, 기본 사용법을 다뤘으며, 실전 예제를 통해 직접 구현하는 방법을 소개했습니다.

더 깊이 있는 내용을 배우고 싶다면 Microsoft 공식 WPF 문서를 참고하세요!