【问题标题】:Navigate within modal dialog using shell使用 shell 在模式对话框中导航
【发布时间】:2019-08-23 12:14:21
【问题描述】:

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

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

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

【问题讨论】:

  • 将您的设置页面包装在 NavigationPage 中
  • @Jason 使用 NavigationPage 可能会解决问题,但之后我将不再使用我想使用的 Shell。但如果我没有找到任何其他解决方案,NavigationPage 将不得不这样做。

标签: shell xamarin


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多