MVVM – 책임

MVVM 패턴은 Model, View, ViewModel의 세 부분으로 구성됩니다. 처음에 대부분의 개발자는 Model, View 및 ViewModel이 포함해야하거나 포함하지 않아야하는 내용과 각 부분의 책임에 대해 거의 혼동하지 않습니다.

이 장에서는 MVVM 패턴의 각 부분에 대한 책임을 배워 어떤 종류의 코드가 어디에 있는지 명확하게 이해할 수 있습니다. MVVM은 실제로 다음 그림과 같이 클라이언트 측을위한 계층화 된 아키텍처입니다.

  • 프리젠 테이션 레이어는 뷰로 구성됩니다.

  • 논리 계층은 뷰 모델입니다.

  • 프리젠 테이션 레이어는 모델 개체의 조합입니다.

  • 이를 생성하고 유지하는 클라이언트 서비스는 2 계층 애플리케이션에서 또는 서비스 호출을 통해 애플리케이션으로 직접 액세스합니다.

  • 클라이언트 서비스는 공식적으로 MVVM 패턴의 일부는 아니지만 추가 분리를 달성하고 중복 코드를 방지하기 위해 MVVM과 함께 자주 사용됩니다.

모델 책임

일반적으로 모델은 가장 이해하기 쉬운 모델입니다. 애플리케이션에서보기를 지원하는 것은 클라이언트 측 데이터 모델입니다.

  • 메모리에 데이터를 포함하기 위해 속성과 일부 변수가있는 개체로 구성됩니다.

  • 이러한 속성 중 일부는 다른 모델 개체를 참조하고 전체적으로 모델 개체 인 개체 그래프를 생성 할 수 있습니다.

  • 모델 개체는 WPF에서 데이터 바인딩을 의미하는 속성 변경 알림을 발생시켜야합니다.

  • 마지막 책임은 선택 사항 인 유효성 검사이지만 INotifyDataErrorInfo / IDataErrorInfo와 같은 인터페이스를 통해 WPF 데이터 바인딩 유효성 검사 기능을 사용하여 모델 개체에 유효성 검사 정보를 포함 할 수 있습니다.

책임보기

뷰의 주요 목적과 책임은 사용자가 화면에서 보는 구조를 정의하는 것입니다. 구조는 정적 및 동적 부품을 포함 할 수 있습니다.

  • 정적 부분은 뷰가 구성되는 컨트롤의 레이아웃과 컨트롤을 정의하는 XAML 계층 구조입니다.

  • 동적 부분은보기의 일부로 정의 된 애니메이션 또는 상태 변경과 같습니다.

  • MVVM의 주요 목표는 뷰 뒤에 코드가 없어야한다는 것입니다.

  • 보기에 뒤에 코드가 없다는 것은 불가능합니다. 보기에서 최소한 생성자와 구성 요소를 초기화하는 호출이 필요합니다.

  • 아이디어는 이벤트 처리, 작업 및 데이터 조작 논리 코드가 View의 코드 뒤에 있어서는 안된다는 것입니다.

  • UI 요소에 대한 참조를 갖는 데 필요한 코드 뒤에 있어야하는 코드는 본질적으로 뷰 코드입니다.

ViewModel 책임

  • ViewModel은 MVVM 애플리케이션의 주요 포인트입니다. ViewModel의 주요 책임은 뷰에 데이터를 제공하여 뷰가 해당 데이터를 화면에 표시 할 수 있도록하는 것입니다.

  • 또한 사용자가 데이터와 상호 작용하고 데이터를 변경할 수 있습니다.

  • ViewModel의 또 다른 주요 책임은 뷰에 대한 상호 작용 논리를 캡슐화하는 것이지만 응용 프로그램의 모든 논리가 ViewModel로 이동해야한다는 의미는 아닙니다.

  • 사용자 또는 뷰의 변경 사항에 따라 올바른 일이 발생하도록 호출의 적절한 순서를 처리 할 수 ​​있어야합니다.

  • ViewModel은 다른보기로 이동할시기를 결정하는 것과 같은 탐색 논리도 관리해야합니다.