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은 다른보기로 이동할시기를 결정하는 것과 같은 탐색 논리도 관리해야합니다.