使用Shell在模态对话框中导航

时间:2019-08-23 12:14:21

标签: shell xamarin

我正在使用外壳在Xamarin Forms应用程序中导航。我希望我的设置位于“模态”对话框中,该对话框可通过调用PushModalAsync导航到。在该设置页面中,我想导航至其他页面,例如更改密码。但是由于我没有使用NavigationPage,所以无法使其正常工作。

如何将Shell与Modal一起使用并在该Modal页面中导航?

我可以通过将我的SettingsPage设置为新的MainPage使其工作。但是然后我没有模态导航动画。

1 个答案:

答案 0 :(得分:0)

  

使用NavigationPage可能会解决问题,但是我会   不再使用我要使用的Shell。

我认为将您的Settings页包裹在NavigationPage中会解决您的问题。使用NavigationPage之后,您仍然可以使用Shell。

例如,您可以在SettingPage中执行一些推送操作:

private async void Button_Clicked(object sender, EventArgs e)
{
    await Navigation.PushAsync(new BearDetailPage());
}

BearDetailPage中,如果要使用Shell,可以使用MessagingCenter发送消息来关闭SettingPage:

private async void Button_Clicked(object sender, EventArgs e)
{
    await Navigation.PopToRootAsync(false);
    MessagingCenter.Send<BearDetailPage>(this, "BackToShell");
}

然后在SettingPage中订阅该消息:

public SettingPage()
{
    InitializeComponent();

    MessagingCenter.Subscribe<BearDetailPage>(this, "BackToShell", (sender) =>
    {
        // Do something whenever the "BackToShell" message is received
        this.Navigation.PopModalAsync();
    });
}

如果您不想在navigationbar中使用SettingPage,则可以将其隐藏。