如何在prism master-detail Xamarin.Forms应用程序中导航

时间:2017-05-08 05:25:38

标签: navigation xamarin.forms prism master-detail

我正在创建我的第一个Prism / XF应用程序。主页面是MasterDetailPage。我已经读过要从母版页VM更改详细信息页面,我只需要从MasterPageViewModel调用NavigationService.NavigateAsync(“NewDetailPage”)。

当我这样做时,母版页会更改,并成为NewDetailPage。我想保留MasterDatilPage并更改它的详细信息页面。

这是我的App类

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>();
    }
}

这很有效。使用正确的master(MenuPrincipalPage)和正确的详细信息(ClubHousePage)启动应用程序。

我在MenuPrincipalPageViewModel(主页面VM)中尝试了一些东西。首先直接导航到详细信息页面:

    public DelegateCommand AProposCommand { get;  private set; }

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

MasterPage已更改。

然后我尝试了这个:

    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");
    }

但这里不存在问题吗?我认为完整的导航堆栈已被删除。

我做错了吗?

非常感谢您的建议, 于连

0 个答案:

没有答案