我正在使用外壳在Xamarin Forms应用程序中导航。我希望我的设置位于“模态”对话框中,该对话框可通过调用PushModalAsync导航到。在该设置页面中,我想导航至其他页面,例如更改密码。但是由于我没有使用NavigationPage,所以无法使其正常工作。
如何将Shell与Modal一起使用并在该Modal页面中导航?
我可以通过将我的SettingsPage设置为新的MainPage使其工作。但是然后我没有模态导航动画。
答案 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
,则可以将其隐藏。