【发布时间】:2017-10-06 00:34:41
【问题描述】:
我正在创建我的第一个 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>();
}
}
这很好用。应用程序使用正确的主 (MenuPrincipalPage) 和正确的详细信息 (ClubHousePage) 启动。
我的 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");
}
但是这里没有问题吗?我认为完整的导航堆栈已被删除。
我是不是做错了什么?
非常感谢您的建议, 朱利安
【问题讨论】:
标签: navigation xamarin.forms prism master-detail