Windows Phone 72010. 8. 9. 16:33

MVVM을 쓰면서 페이지 이동을 할때에는 꼭 Page 에서 해야만 했다.


즉 뷰딴에서만 이동이 가능했다.


예를 들면

var uri = new Uri(string.Format("/TypenWork;component/Views/OptionPage.xaml"), UriKind.RelativeOrAbsolute);
NavigationService.Navigate(uri);

이렇게 하여야만 했지만


그래서 꼭 behind딴에서 코딩을 하여 mvvm 고유의 깔끔함이 없어졌다.


하지만 페이지 이동을 딴 곳 즉 ViewModel 이나 Model쪽에서 하고 싶을때가 많다(거의 90%)


그럴때는 어떻게 할까... 언제까지 datacontext를 형변환 하여 사용할것인가?


팀장님이 발견한 방법이다


var temp = App.Current.RootVisual as PhoneApplicationFrame;
temp.Navigate(new Uri("/UnitConverter;component/Views/MainListView.xaml",UriKind.RelativeOrAbsolute));


이렇게 app의 RootVisual를 PhoneApplicationFrame을 캐스팅하여 사용하는 방법이다 굿~^^


이제 자유롭게 어디서든 Navigate 를 사용할수 있다.

Posted by 동동(이재동)