다음을 통해 공유


WinUI의 데이터 바인딩, 종속성 주입 및 단위 테스트

이 자습서 시리즈에서는 WinUI 3 앱에서 MVVM(Model-View-ViewModel) 디자인 패턴 및 MVVM 도구 키트 를 사용하여 데이터 바인딩, 종속성 주입 및 단위 테스트를 구현하는 방법을 보여 줍니다. WinUI 앱 만들기 자습서를 기반으로 하며 MVVM 도구 키트와 MVVM 도구 키트와 기존 MVVM 방법 간의 차이점을 활용하도록 보기 모델을 업데이트하는 방법을 보여 줍니다.

GitHub 리포지토리에서 이 자습서의 코드를 다운로드하거나 볼 수 있습니다.

이 튜토리얼에서는 다음을 배우게 됩니다:

  • MVVM 도구 키트와 기존 MVVM 방법 간의 차이점을 이해합니다.
  • 테스트 용이성을 향상시키기 위해 ViewModels 및 서비스를 보관하는 별도의 클래스 라이브러리 프로젝트를 만듭니다.
  • MVVM 도구 키트를 사용하여 WinUI 앱에서 데이터 바인딩을 구현합니다.
  • AllNotesViewModelNoteViewModel 보기 모델을 추가하여 MVVM 툴킷을 활용하세요.
  • 종속성 주입을 통합하여 ViewModels 및 서비스를 관리합니다.
  • ViewModels 및 서비스를 테스트하는 단위 테스트 프로젝트를 만듭니다.

필수 조건

이 자습서를 완료하려면 다음 필수 구성 요소가 필요합니다.

MVVM 도구 키트란?

MVVM 도구 키트는 .NET 애플리케이션에서 MVVM 디자인 패턴을 구현하는 데 도움이 되는 최신의 경량 및 빠른 라이브러리입니다. .NET 커뮤니티 도구 키트의 일부이며 MVVM 기반 애플리케이션 개발을 간소화하기 위한 도구 및 유틸리티 집합을 제공합니다. MVVM 도구 키트에는 다음과 같은 기능이 포함되어 있습니다.

  • ObservableObject: 인터페이스를 INotifyPropertyChanged 구현하는 기본 클래스이므로 속성 변경의 뷰를 알리는 보기 모델을 만들 수 있습니다.
  • RelayCommand: 뷰 모델의 메서드에 UI 작업을 바인딩할 수 있는 명령 구현입니다.
  • Messenger: 긴밀한 결합 없이 애플리케이션의 여러 부분 간의 통신을 가능하게 하는 메시징 시스템입니다.
  • 특성: 속성 변경 알림 및 명령 구현과 같은 상용구 코드를 생성하는 데 사용할 수 있는 특성 집합입니다.
  • 소스 생성기: 보일러플레이트 코드를 줄이고 성능을 향상시키는 컴파일 타임 코드 생성입니다.
  • 종속성 주입 지원: 뷰 모델 및 서비스의 수명 주기를 관리하기 위한 종속성 주입에 대한 기본 제공 지원입니다.

MVVM 도구 키트는 쉽게 사용하고 기존 프로젝트에 통합할 수 있도록 설계되었습니다. WinUI, WPF 및 .NET MAUI를 비롯한 다양한 .NET 플랫폼과 호환됩니다. GitHub 리포지토리 또는 Microsoft Store의 샘플 앱에서 일부 샘플 앱을 확인하여 다양한 시나리오에서 MVVM 도구 키트를 사용하는 방법을 확인할 수 있습니다.

MVVM 도구 키트는 기존 MVVM 접근 방식과 어떻게 비교됩니까?

MVVM 도구 키트는 상용구 ViewModel 코드의 양을 줄이고 기존 접근 방식에 비해 MVVM 디자인 패턴을 구현하는 여러 측면을 간소화합니다. 몇 가지 주요 차이점은 다음과 같습니다.

특징 기존 MVVM 접근 방식 MVVM 도구 키트 접근 방식
속성 변경 알림 기본 클래스에서 INotifyPropertyChanged를 수동으로 구현하고, 각 속성에 대해 PropertyChanged 이벤트를 트리거합니다. ObservableObject를 상속하고 SetProperty 메서드를 사용하여 PropertyChanged 이벤트를 자동으로 발생시킵니다.
명령 구현 각 명령에 대해 ICommand을(를) 수동으로 구현합니다. 상용구가 최소화된 명령을 쉽게 만드는 데 사용합니다 RelayCommand .
Messaging 사용자 지정 메시징 시스템을 구현하거나 타사 라이브러리를 사용합니다. 기본 제공 Messenger 클래스를 사용하여 구성 요소 간의 통신을 분리합니다.
상용구 코드 속성 변경 알림 및 명령 구현에 대한 반복 코드를 작성합니다. 특성 및 소스 생성기를 사용하여 상용구 코드를 줄입니다.
Performance 리플렉션 및 런타임 코드 생성으로 인해 성능 오버헤드가 발생할 수 있습니다. 원본 생성기는 컴파일 시간 코드 생성을 제공하여 성능을 향상합니다.
종속성 주입 지원 뷰 모델 수명 주기를 수동으로 설정 및 관리해야 합니다. 뷰 모델 수명 주기를 관리하는 종속성 주입을 기본적으로 지원합니다.
학습 곡선 MVVM 개념 및 패턴에 대한 심층적인 이해가 필요할 수 있습니다. 단순성과 생산성에 중점을 두고 더 쉽게 배우고 사용할 수 있습니다.

MVVM 디자인 패턴에 대한 자세한 배경은 Windows 데이터 바인딩 및 MVVM, MVVM(Model-View-ViewModel)INotifyPropertyChanged 인터페이스에 대한 참조 설명서를 참조하세요.

WinUI Notes 앱

이 자습서에서 빌드하는 최종 애플리케이션은 WinUI 앱 만들기 자습서에서 리팩터링된 버전의 WinUI Notes 앱 입니다. 이 앱을 사용하면 사용자가 여러 노트를 만들고 저장하고 로드할 수 있습니다. 원래 앱의 사용자 인터페이스는 동일하게 유지되지만 업데이트된 아키텍처는 데이터 바인딩 및 보기 모델 관리에 MVVM 도구 키트를 사용합니다.

AllNotesPage

AllNotesPage 보기에 저장된 메모 3개를 표시하는 WinUI Notes 앱의 스크린샷

NotePage

NotePage 보기의 빈 노트 페이지를 보여 주는 WinUI Notes 앱의 스크린샷.

팁 (조언)

Windows 앱을 빌드할 때 종종 API 참조 문서 및 개념 문서를 참조합니다. 이 자습서에서는 텍스트와 "문서에서 자세히 알아보기:"라는 레이블이 지정된 그룹에 인라인으로 링크가 표시됩니다. 이러한 링크는 선택 사항입니다. 자습서를 완료하기 위해 팔로우할 필요가 없습니다. 사용자 고유의 앱을 만들기 시작할 때 필요한 정보를 찾을 위치를 기록하려는 경우에 제공됩니다.