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
}
}
INavigationService取决于ViewModelLocator的使用。如果不使用它,则无法注入服务。与其手动解析VM,不如使用ViewModelLocator.AutowireViewModel附加的属性。此外,你不想那样使用你的容器。使用DI时,您只需要一个组合根。
此外,我建议使用最新的6.1预览版。它在导航方面有很多改进。