【问题标题】:PRISM module with DI unable to navigate view带有 DI 的 PRISM 模块无法导航视图
【发布时间】: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


【解决方案1】:

解决了我的问题,是我的 APIServiceBase 导致了错误,因为我的空字符串基地址无法转换为 Uri。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    相关资源
    最近更新 更多