본문 바로가기

WPF

[WPF] MVVM

◈ 정의

WPF는 여러 패턴 중에서도 MVVM 패턴을 사용하여 응용프로그램을 쉽게 작성하기 위해 디자인되었기 때문에 MVVM은 WPF 개발자에게 공영어라고 할 수 있습니다.


◈ 설명

실제로 Microsoft에서는 핵심 WPF 플랫폼이 개발 중인 동안 Microsoft Expression Blend와 같은 WPF 응용 프로그램을 개발하기 위해 내부적으로 MVVM을 사용했습니다.


외형이 없는 컨트롤 모델 및 데이터 템플릿과 같은 WPF의 여러 측면에서는 MVVM이 권장하는 상태와 동작으로부터의 강력한 표시 분리를 활용하고 있습니다.

 

MVVM이 훌륭한 패턴이 되는데 영향을 미친 WPF의 가장 중요한 측면은 데이터 바인딩 인프라입니다. 뷰의 속성을 ViewModel에 바인딩하면 둘 간에 느슨한 연결을 수행하고 ViewModel에서 뷰를 업데이트하는 코드를 작성해야 하는 필요성을 완전히 제거할 수 있습니다. 데이터 바인딩 시스템은 또한 유효성 검사 오류를 뷰로 전송하는 표준화된 방법을 제공하는 입력 유효성 검사를 지원합니다.

 

이 패턴을 더욱 유용하게 만드는 WPF의 다른 두 가지 기능으로 데이터 템플릿과 리소스 시스템이 있습니다.

데이터 템플릿은 사용자 인터페이스에 나와 있는 ViewModel 개체에 뷰를 적용합니다. XAML을 사용하여 템플릿을 선언하고 런타임에 리소스 시스템이 자동으로 이러한 템플릿을 찾고 적용하도록 할 수 있습니다.


◈ MVVM 핵심 목표

1) 디자인과 로직을 분리해 내는 .

2) 그러기 위해서 View Model 물론이거니와 Model 핸들링하고 View 연결시켜주는 ViewMel

3) ViewModel 핵심 가치는 View 추상화를 통해 View ViewModel 간의 의존성을 낮추고 다형성의 유연함을 충분히 얻는


4) WPF에서를 이를 지원하는 구조로는 View영역의 DataContext라는 문맥을 꼽을 있다. View ViewModel property 연결하는 Databinding View 가진 DataContext 활용하고 DataContext ViewModel 할당하여 사용한다.

명시적으로 View에서 DataContext ViewModel 할당할 경우 View 의존성이 발생할 있으므로 ContentControl이나 ItemsControl 이용한 DataTemplate 적용 방식으로 사용하는 것이 중요




'WPF' 카테고리의 다른 글

[WPF] 다른 쓰레드에서 UI 쓰레드 접근하기  (0) 2018.08.09
[WPF] Prism  (0) 2018.07.04
[WPF] Routed Event  (0) 2018.07.04