2011-03-04 3 views
0

ViewModel에서 다른 페이지로 이동하는 방법은 여러 가지가 있다는 것을 알고 있습니다.ViewModel의 다른 페이지로 이동하는 것이 옳은가요?

MVVM의 목적은 ViewModel에서보기를 분리하는 것이기 때문에 좋은 생각인지 모르겠지만 ViewModel 내에서 다른 페이지로 이동한다는 것은 View와 ViewModel 사이에 몇 가지가 있음을 의미합니다. 뷰 이름, ViewModel에서도 URI (문자열)을 변경해야합니다.

알고 싶습니다. ViewModel에서 다른 페이지로 이동 하시겠습니까? 그것이 틀린 경우 다른 페이지로 이동하는 데 올바른 (또는 더 나은) 방법은 무엇입니까?

답변

0

둘 다 옳고 자연 스럽습니다.

탐색 요청을 할 때 사용자가 Uri의 일부로 제공하는 "이름"은 View 클래스가 컨테이너에 등록 된 이름입니다. 컨테이너에 클래스를 등록하는 것은 View 또는 ViewModel이 아닌 모듈 자체에 의해 수행되므로 뷰와 ViewModel간에 커플 링을 도입하지 않습니다.

그렇다면 프리즘이 내비게이션 요청을 해석하는 방식을 사용자 정의하려면 항상 IRegionNavigationContentLoader을 구현하는 클래스를 작성할 수 있습니다. 이것을 컨테이너에 등록하면 Prism은 내장 된 RegionNavigationContentLoader 대신 자신의 클래스를 해결합니다. 그러나 세계에서 가장 간단한 것은 아닙니다.

0

탐색 논리를 유지할 별도의 클래스를 만드는 것이 어떨까요? 이 경우 ViewModel에서 메시지를 보내면 프로그램에서보기를 변경해야하며 세부 정보는 임의로 결정됩니다. 이 방법을 사용하면 여전히 View와 VM간에 직접적인 연결이 없습니다.

+0

아직 연결과 연결이 있습니다. 그것을 다른 클래스에 숨기 만해도 사라지지 않습니다. 물론 네비게이션 로직을 중앙 집중화하면 (그 이상이 있다면) 그 장점이 있습니다. – Jon

관련 문제