저는 Silverlight 프로젝트 (Silverlight 4.0)를 처음으로 시작하려고합니다. MVVM을 사용할 예정이며 지난 며칠간 탐색을 보면서 시간을 보냈습니다.Navigate 서비스가있는 Silverlight에서 MVVM을 구현하려면 어떻게해야합니까?
우선, 많은 MVVM 예제가 MainPage를 뷰/뷰 모델로 구현하지 않는다는 것을 알아 챘습니다. 메인 페이지에는 탐색 프레임과 Uri 매핑이 포함되어 있으며 뷰/뷰 모델을 따르는 페이지로 이동합니다. 메인 페이지가보기 /보기 모델로 구현되지 않은 MVVM 및 탐색 서비스를 사용할 때 표준입니까? 예를 들어, Silverlight 4 교육 키트에는 이벤트 관리자 샘플이 들어 있으며 Main Page에는 Navigated 및 NavigatedFailed와 같은 탐색 이벤트를 처리하는 코드가 많이 있습니다. 하지만 다른 모든 페이지는보기 /보기 모델입니다.
둘째, 네비게이션 서비스를 사용하면 탐색을 변경하는 논리가 이제보기에서 수행되고보기 모델에 의해 제어되지 않습니다 (MVVM의 일부 아이디어에 위배됩니다). 그물에 대한 접근법 중 일부는 ViewModel에서 View 로의 메시징을 사용하거나 Navigation 서비스를 ViewModel 및 거기에서 제어되는 내비게이션으로 전달합니다. 이 접근법 중 하나가 다른 접근법보다 우수합니까?
이상적으로는 메인 페이지가 View/ViewModel을 따르고 ViewModel이 탐색을 제어하고보기에 코드 숨김이없는 예제를 찾고 싶습니다. 내가 너무 많이 묻는거야 ??!
참고 PRISM 또는 MVVM Light를 사용하고 있지 않습니다.
건배
안녕하세요 Vinicius, 답장을 보내 주셔서 감사합니다. 약간 혼란 스럽네요 - 당신의 메인 페이지는 상응하는 ViewModel을 가지고 있습니까? 내비게이션이 어떻게 통제되는지에 관해서도 나는 잃어버린다. 사용자가 브라우저에서 앞으로/뒤로 클릭하면 ViewModel에서 아무 것도 실행됩니까? – rockshire
우리의 내비게이션은 시간당 하나의보기로 제한됩니다. 하나의보기를로드하면 다른보기가 닫힙니다. 우리 MainPage는 MainPage의 DataContext로서 전달되는 상응하는 ViewModel (우리가 쉘을 생성 한 곳)을 가지고 있습니다. 거기에서 원하는대로 할 수 있습니다. – Vinicius