Ich erstelle meine erste Prism/XF-Anwendung. Die Hauptseite ist eine MasterDetailPage. Ich habe gelesen, dass, um die Detailseite von der Masterseite VM zu ändern, ich nur NavigationService.NavigateAsync ("NewDetailPage") aus dem MasterPageViewModel aufrufen muss.So navigieren Sie in einem Prisma Master-Detail Xamarin.Forms-Anwendung
Wenn ich dies tue, ändert sich die Masterseite und wird NewDetailPage. Ich möchte die MasterDatilPage beibehalten und ihre Detailseite ändern.
Hier ist meine App Klasse
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>();
}
}
Dies funktioniert gut. Die Anwendung wird mit dem richtigen Master (MenuPrincipalPage) und dem korrekten Detail (ClubHousePage) gestartet.
Ich MenuPrincipalPageViewModel (die Master-Seite VM), habe ich ein paar Dinge ausprobiert. Navigieren Sie zuerst direkt zur Detailseite:
public DelegateCommand AProposCommand { get; private set; }
private void APropos()
{
NavigationService.NavigateAsync("AProposPage",);
}
Die MasterPage wurde geändert.
Ich versuchte dann das:
public DelegateCommand AProposCommand { get; private set; }
private void APropos()
{
NavigationService.NavigateAsync("MenuPrincipalPage/AProposPage");
}
Der Master auch geändert wird.
Dieser Code funktioniert:
public DelegateCommand AProposCommand { get; private set; }
private void APropos()
{
NavigationService.NavigateAsync("/MenuPrincipalPage/AProposPage");
}
Aber ist es nicht ein Problem hier? Der vollständige Navigationsstapel ist gelöscht, denke ich.
Habe ich etwas falsch gemacht?
Vielen Dank im Voraus für Ihre Ratschläge, Julien
Hallo Brian, Ich habe eine NavigationPage hinzugefügt, aber mein Problem ist immer noch da. In der Tat ist meine Frage: Warum sollte ich ein/am Anfang der Navigations-URL setzen? Der folgende Code funktioniert: NavigationService.NavigateAsync ("/ MenuPrincipalPage/ContenuPage/AProposPage"); Während dieser nicht: NavigationService.NavigateAsync ("MenuPrincipalPage/ContenuPage/AProposPage"); Der einzige Unterschied ist der/am Anfang. –
Wenn Sie am Anfang ein "/" setzen, setzen Sie den Navigationsstapel zurück. Es klingt, als ob du etwas falsch machst. Wenn Sie vom Master aus navigieren, verwenden Sie einfach "NavigationPage/Target" und schließen Sie die Master-Detailseite nicht in den Pfad ein. Sehen Sie sich dieses Beispiel an: https://github.com/PrismLibrary/Prism-Samples-Forms/tree/master/HamburgerMenu –
Hi Brian, der NavigationPage/Target verwendet, wird die Zurück-Schaltfläche in ViewA \ ViewB \ ViewC nicht anzeigen. Nur das Hamburgermenü oben – kaycee