2017-09-19 2 views
0

프리즘과 함께 Xamarin Forms를 사용하고 있습니다. MasterDetail.Master에서 MasterDetail의 일부가 아닌 ContentPage로 이동하는 방법 (즉, 세부 사항을 업데이트하고 Master/Detail 관계의 일부로 계속해서 사용하고 싶지는 않습니다) 유스 케이스는 햄버거 메뉴에서 설정을 클릭하면 Gmail 앱과 유사합니다. Master/Detail에서 빠져 나옵니다. NavigationPage/ContentPage에서 뒤로 버튼을 사용하면 MasterDetail 페이지로 돌아갈 수 있습니다. 당신이 프리즘을 사용하지 않은 경우프리 마스터를 사용하여 Xamarin Forms를 마스터 정보없이 컨텐츠 페이지로 이동하는 방법

하면 상세 페이지로 이동하여 거기에서 Navigation.PushAsync을 할 수있는 :

var mdp = Application.Current.MainPage as MasterDetailPage; 
mdp.IsPresented = false; 
await mdp.Detail.Navigation.PushAsync(new ContentPage2()); 

하지만이 사용하는 프리즘 탐색을 수행하는 방법을 볼 수 없습니다.

스티브

답변

0

Application.Current.MainPageMasterDetailPage 당신을 가정하고. 현재 DetailMasterDetailPage이고 NavigationPage(new ContentPage1())입니다.

옵션 1 : 당신은 ContentPage1 같은 탐색 스택에 ContentPage2을 누르면됩니다

현재 탐색 스택

에서 표시 ContentPage2 당신의 ContentPage1에서

, 당신은 ContentPage2로 이동하는 두 가지 옵션이 있습니다. 탐색 바의 뒤로 버튼이 자동으로 추가됩니다. 옵션 2

// Call this code in ContentPage1 
_navigationService.PushAsync("ContentPage2"); 

: 모달

당신은 모달 페이지를 제시하고 완전히 새로운 탐색 스택에 ContentPage2을 표시합니다. NavigationBar에 Back 버튼을 추가하고 자신의 코드로 click 이벤트를 처리해야합니다.

// Call this code in ContentPage1 
_navigationService.PushAsync("NavigationPage/ContentPage2", null, true); 
+0

예, 옵션 1을 구현하고 싶습니다. 따라서 세부 페이지의 ViewModel에 액세스해야합니다. 여러 세부 페이지를 마스터/세부 관계로 바꿔서 특정 세부 페이지를 알지 못합니다. 그래서, 하나의 메소드 (NavigateTo (string param))가있는 세부 ViewModel 클래스 용 인터페이스를 생성하여 param에 대한 탐색을 수행합니다. 마스터 ViewModel에서 Detail.CurrentPage.BindingContext를 통해 세부 정보 페이지의 ViewModel로 이동하여 인터페이스로 캐스팅하고 NavigateTo 메서드를 호출합니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? – Steve

+0

MessagingCenter를 사용하여 ViewModel 세부 정보 페이지에 캐스팅 대신 탐색을 수행 할 수 있습니다. – lowleetak

+0

감사합니다. 매우 도움이됩니다. – Steve

관련 문제