是什么导致我在 Xamarin with Prism 中导航失败?

What causes my navigation to fail in Xamarin with Prism?

使用 Xamarin.Forms 4.0 和带有 AutoFac 的 Prism 7.1.04,我无法导航到堆栈中的最后一页。我已经在 App.xaml.cs 中注册了我所有的页面。导航到最后一页成功。当为最后一页调用 NavigationAsync 时,将输入 Page 和 ViewModel 的构造函数,但页面不会呈现。

我尝试过但不起作用的方法:

我可以使用 NavigationService 通过 GoBackAsync 向后导航。

在App.xaml.cs中,我注册了以下类型:

protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
            // Register Pages for Navigation
            containerRegistry.RegisterForNavigation<NavigationPage>();
            containerRegistry.RegisterForNavigation<LoginPage, LoginViewModel>();
            containerRegistry.RegisterForNavigation<CustomerSearchPage, CustomerSearchViewModel>();
            containerRegistry.RegisterForNavigation<ConsentPage, ConsentViewModel>();
            containerRegistry.RegisterForNavigation<RequestPage, RequestViewModel>();
            containerRegistry.RegisterForNavigation<BankContextPage, BankContextViewModel>();
            containerRegistry.RegisterForNavigation<CollectionEventsPage, CollectionEventsViewModel>();
            containerRegistry.RegisterForNavigation<CollectionDetailsPage, CollectionDetailsViewModel>();
            containerRegistry.RegisterForNavigation<CollectionItemsListPage, CollectionItemsListViewModel>();
            containerRegistry.RegisterForNavigation<ItemDetailsPage, ItemDetailsViewModel>();
            // ...
}

工作流程从登录页面开始,以线性方式从一页转到另一页,直到到达第八页。由于某种原因,我无法导航到第九页。

App.xaml.cs: await NavigationService.NavigateAsync("NavigationPage/LoginPage");
LoginPage.xaml.cs: await NavigationService.NavigateAsync("CustomerSearchPage");
CustomerSearchViewModel.cs: await NavigationService.NavigateAsync("ConsentPage");
ConsentViewModel.cs: 
                var parameters = new NavigationParameters();
                parameters.Add("consent", consent);
                await NavigationService.NavigateAsync("RequestPage", parameters);
RequestViewModel.cs: await NavigationService.NavigateAsync("BankContextPage");
BankContextPageViewModel.cs: await NavigationService.NavigateAsync("CollectionEventsPage", parameters);
CollectionEventsViewModel.cs: var ret = await NavigationService.NavigateAsync("CollectionItemsListPage");
CollectionItemsListViewModel.cs: status = await NavigationService.NavigateAsync("ItemDetailsPage”, parameters); //This fails

这是否意味着我 运行 内存不足?

调试时,调试器中的行为就好像我离开了 CollectionEventsViewModel。该视图模型中不再有任何调试信息。对

的调用没有 return 值
status = await NavigationService.NavigateAsync("ItemDetailsPage”); 

也没有捕获异常。我正在为 iOS 和 Android 在 Mac 上开发此应用程序。单步执行代码似乎并不能告诉我一切。我不确定哪些诊断工具可以告诉我更多信息。

可能在最后一页你在 xaml 或类似的地方有一些错误,我曾经遇到过这个问题,那是因为我有一个标签的自定义渲染并且在 iOS render 我没有检查是否为 null,这导致页面无法呈现,虽然几个小时以来我一直认为这是一个导航问题,但事实并非如此,所以请确保你没有任何 UI 错误,(不正确的绑定、空绑定、不正确的语法等等)。