2017-05-08 8 views
0

첫 번째 프리즘/XF 응용 프로그램을 만들었습니다. 기본 페이지는 MasterDetailPage입니다. 마스터 페이지 VM에서 세부 정보 페이지를 변경하기 위해 읽었습니다. MasterPageViewModel에서 NavigationService.NavigateAsync ("NewDetailPage")를 호출하면됩니다.프리즘 마스터 디테일에서 탐색하는 방법 Xamarin.Forms 응용 프로그램

이렇게하면 마스터 페이지가 변경되어 NewDetailPage가됩니다. MasterDatilPage를 유지하고 세부 정보 페이지를 변경하고 싶습니다.

다음은이 위대한 작품을 내 응용 프로그램 클래스

public partial class App : PrismApplication 
{ 
    public App(IPlatformInitializer initializer = null) : base(initializer) { } 

    protected override void OnInitialized() 
    { 
     InitializeComponent(); 

     NavigationService.NavigateAsync("MenuPrincipalPage/ClubHousePage"); 
    } 

    protected override void RegisterTypes() 
    { 
     Container.RegisterTypeForNavigation<MenuPrincipalPage>(); 
     Container.RegisterTypeForNavigation<ClubHousePage>(); 
     Container.RegisterTypeForNavigation<AProposPage>(); 
    } 
} 

입니다. 응용 프로그램은 올바른 마스터 (MenuPrincipalPage)와 올바른 세부 정보 (ClubHousePage)로 시작됩니다.

I MenuPrincipalPageViewModel (마스터 페이지 VM), 몇 가지 시도했습니다. 먼저 세부 정보 페이지로 바로 이동하십시오.

public DelegateCommand AProposCommand { get; private set; } 

    private void APropos() 
    { 
     NavigationService.NavigateAsync("AProposPage",); 
    } 

마스터 페이지가 변경되었습니다.

public DelegateCommand AProposCommand { get; private set; } 

    private void APropos() 
    { 
     NavigationService.NavigateAsync("MenuPrincipalPage/AProposPage"); 
    } 

MasterPage도 변경된다

나는 다음이 시도.

public DelegateCommand AProposCommand { get; private set; } 

    private void APropos() 
    { 
     NavigationService.NavigateAsync("/MenuPrincipalPage/AProposPage"); 
    } 

을하지만 문제는 여기가되지 않습니다 :

이 코드는 작동? 전체 탐색 스택이 지워집니다.

내가 잘못 했습니까? 그것은 정확히 정상적으로처럼 작동하고 당신의 조언에 미리

많은 감사, 줄리앙

답변

2

. 마스터 디테일 페이지를 바꾸고 있다고 생각하는 이유는 무엇입니까? 햄버거 메뉴가 없기 때문입니까? 나는 당신이 지금 어떻게 설치했는지에 따라 햄버거 메뉴가없고 MasterDetailPage가 아닌 모양을 제공하는 MasterDetailPage가 생기기 때문에 그렇게 생각합니다. 탐색을 통해 쉽게 테스트 할 수 있으며 왼쪽 가장자리에서 스 와이프하여 마스터 메뉴를 표시 할 수 있습니다.

MasterDetailPage를 사용할 때 NavigationPage에 세부 사항을 배치해야합니다. 이 탐색 스택의에 대한

NavigationService.Navigate("MasterDetailPage/NavigationPage/Detail");

그런 다음 세부 사항 페이지 내에서 수행 어떤 네비게이션은 자동으로 뒤로 버튼을해야합니다.

+0

안녕하세요 Brian, NavigationPage를 추가했지만 문제가 여전히 있습니다. 사실, 제 질문은 : 왜 내가 /를 탐색 URL의 시작 부분에 넣어야합니까? 다음 코드가 작동합니다. NavigationService.NavigateAsync ("/ MenuPrincipalPage/ContenuPage/AProposPage"); 해당 사항 없음 : NavigationService.NavigateAsync ("MenuPrincipalPage/ContenuPage/AProposPage"); 유일한 차이점은 처음에 /입니다. –

+0

처음에 "/"를 삽입하면 탐색 스택이 재설정됩니다. 네가 뭔가 잘못한 것처럼 들린다. 마스터에서 탐색하는 경우 "NavigationPage/Target"을 사용하고 경로에 마스터 세부 정보 페이지를 포함시키지 마십시오. 이 샘플을 확인하십시오 : https://github.com/PrismLibrary/Prism-Samples-Forms/tree/master/HamburgerMenu –

+0

안녕하세요 Brian, NavigationPage/Target을 사용하면 ViewA \ ViewB \ ViewC에 뒤로 버튼이 표시되지 않습니다. 위에있는 햄버거 메뉴 만 – kaycee