Вы можете получить доступ к экземпляру Prims NavigationService, чтобы добиться того, что вы пытаетесь сделать. Но это охраняемая собственность. Итак, сначала вам нужно будет представить его через класс приложения, как показано ниже:
public new INavigationService NavigationService => base.NavigationService;
Теперь вы можете получить доступ к NavigationService из любого места в вашем приложении, просто ссылаясь на него через свое приложение, как показано ниже:
(Xamarin.Forms.Application.Current as App).NavigationService.NavigateAsync("your/page/path");
Итак, ваш класс приложения будет выглядеть примерно так:
public partial class App : PrismApplication
{
public new INavigationService NavigationService => base.NavigationService;
public bool navigating;
public App(IPlatformInitializer initializer = null, bool shallNavigate=false) : base(initializer)
{
navigating = shallNavigate;
}
protected async override void OnInitialized()
{
BlobCache.ApplicationName = "ExploreXam";
InitializeComponent();
FlowListView.Init();
//await NavigationService.NavigateAsync("LoginPage");
await NavigationService.NavigateAsync("NavigationPage/LoginPage");
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
//mapping
}
}
И ваша функция NotificationClickOn должна выглядеть примерно так:
private async void NotificationClickedOn(Intent intent)
{
if (intent.Action == ExploreXamFirebaseMessagingService.ExploreXamNotification && intent.HasExtra("XamId"))
{
var navigationService = (Xamarin.Forms.Application.Current as ContosoCookbook.App).NavigationService;
await navigationService.NavigateAsync("YourNavigationPage/SpecificPage");
}
}