MVVM에서이 작업을 수행하는 데는 몇 가지 방법이 있습니다. 스티브 로빈스 (Steve Robbins)는 "다른 화면을로드하는 방법을 아는 것은 VM의 책임이 아닙니다"라고 동의하지만, 새로운 화면을 표시해야하는 상황이 발생했다는 통지를받는 것은 VM의 책임입니다. 뷰가 필요에 따라로드되고 언로드되는 객체에 대한 알림. 기억해야 할 점은 각 VM이 뷰에 바인딩되고 새 뷰가 표시되면 VM이 대체된다는 점입니다. 따라서 경영진의 성격 상 대체해야 할 것이 있습니다.
그런 이유로 Composite WPF (프리즘) 프레임 워크가 많은 주목을 받고 있습니다. 나는 당신이 프리즘을 배우기 전에 제기 한 것과 같은 이슈로 고심했다. 카테고리 목록이 항목 컨트롤에 표시되고 있다고 가정합니다. 기본적으로, 상황에 따라 아마 컨트롤의 SelectedItem 속성을 VM의 SelectedItem 속성에 바인딩 할 것입니다. 그 속성의 setter에게 MVVM 메서드를 호출하여 선택의 프리즘 프레임 워크에 알리고 속성 설정자에게 전달 된 SelectedItem을 전달합니다. 프리즘을 사용하여 모듈을 페이지를 표시해야합니다.
프리즘에 대한 좋은 점은 제품 페이지가 카테고리 페이지를 대체하기를 원한다면 작동하고, 동일한 창에서 카테고리 창 옆에 제품 패널을 표시하려는 경우에도 효과가 있다는 것입니다 . 셸 (기본 창)을 설정할 때 영역 하나 또는 두 개를 지정하는 것이 간단합니다.
프리즘에 대한 학습 곡선이 있지만 매우 가파르지는 않습니다. MVVM과 잘 작동하며 파티셔닝의 이점을 누릴 수있는 모든 응용 프로그램을위한 훌륭한 프레임 워크입니다. WPF 응용 프로그램 디자인의 핵심 요소라고 생각합니다.
Yaa하지만 MVVM에서는 표준을 따라야합니다. 그렇지 않으면 새 Window의 인스턴스를 만들고 Show() 메서드를 호출 할 수 있습니다. 그러나 MVVM에는 일부 Workspaces-Command-PropertyChanged 메커니즘이 있습니다. 그렇다면이 표준을 사용하여 달성하는 방법은 무엇입니까? –
MVVM은 풍부한 바인딩을 증명하는 데이터에서 프리젠 테이션을 분리하는 것으로 전체 응용 프로그램 아키텍처를 다루는 "슈퍼 패턴"이 아닙니다! 다른 아키텍처 패턴에 추가로 * 사용합니다. MVVM이 간다면 Commanding을 통해 세부 정보를 볼 수있는 요청을 받게되지만 다른 화면을로드하는 방법을 알면 VM의 책임이 아닙니다! –