Xamarin的Prism,INavigationService的依赖项失败

本文关键字:失败 依赖 Prism Xamarin INavigationService | 更新日期: 2023-09-27 18:29:03

我正在使用PRISM为iOS开发Xamarin.Forms应用程序示例。

但当我尝试在ViewModel中使用INavigationService时,它失败了,说接口INavigationService的依赖性失败

我不知道我做错了什么,我们怎么能绕过它,或者这是INavigationServices注入中的一个错误。

谢谢Divikiran Ravela

这是代码

    public App()
    {
        // The root page of your application
        Prism = new PrismBootStrap();
        Prism.Run(this);
    }
    public class PrismBootStrap : UnityBootstrapper
{
    protected override Page CreateMainPage()
    {
        return new NavigationPage(Container.Resolve<HomePage>());
    }
    protected override void RegisterTypes()
    {
        Container.RegisterTypeForNavigation<HomePage, HomePageViewModel>();
    }
}

    public class HomePage : ContentPage
    {
        public HomePageViewModel ViewModel { get; set; }

   public HomePage()
    {
        ViewModel = App.Prism.Container.Resolve<HomePageViewModel>();
        Content = new StackLayout
        {
            Children = {
                new Label { Text = "Hello ContentPage" }
            }
        };
    }
}

public class HomePageViewModel : BindableBase
{
    private readonly INavigationService _navigationService;
    public HomePageViewModel(INavigationService navigationService)
    {
        _navigationService = navigationService; //Fails here
    }
}

Xamarin的Prism,INavigationService的依赖项失败

INavigationService取决于ViewModelLocator的使用。如果不使用它,则无法注入服务。与其手动解析VM,不如使用ViewModelLocator.AutowireViewModel附加的属性。此外,你不想那样使用你的容器。使用DI时,您只需要一个组合根。

此外,我建议使用最新的6.1预览版。它在导航方面有很多改进。