【发布时间】:2019-02-07 14:40:23
【问题描述】:
对 Prism 的模块很新,我使用的是 prism 7,我有一个模块注册了它的 View/ViewModel 和其他服务:
public void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterForNavigation<LoginView, LoginViewModel>();
containerRegistry.RegisterSingleton<ILoginManager, LoginManager>();
containerRegistry.RegisterSingleton<ILoginAPIService, LoginAPIService>();
}
manager/apiservice 中包含的其他服务都注册在我的App.xaml.cs
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterSingleton<IServiceEntityMapper, ServiceEntityMapper>();
}
谁有 ViewModel 构造函数
ILoginManager LoginManager;
public LoginViewModel(INavigationService navigationService, IPageDialogService pageDialogService, ILoginManager loginManager) : base(navigationService, pageDialogService)
{
LoginManager = loginManager;
}
但是,每当我注入 ILoginManager 时,我似乎无法导航到它,它不会给我任何异常或崩溃,我注册服务的方式有什么问题吗?此外,删除 ILoginManager 让我能够再次导航到它
【问题讨论】:
-
导航提供了一个结果,它说什么?
-
@Haukinger 你的意思是 NavigationServiceAsync 方法吗?
-
如果你这样做:
var result = await NavigationService.NavigateAsync("LoginView");,result.Success 应该是 false 并且 result.Exception 不应该为 null...结果中的异常应该有助于为您提供有关问题的线索。 . 如果您仍然不确定尝试在 OnInitialized 中尝试/捕获并尝试解决您的服务/视图模型和视图..其中一个是您可能的问题。 -
嗨@DanS。能够解决我的问题,原因是因为我的 APIService 试图转换 URI 类型的空字符串。谢谢!
标签: xamarin.forms prism