gpt4 book ai didi

c# - Xamarin 的 Prism,INavigationService 的依赖失败

转载 作者:行者123 更新时间:2023-11-29 12:07:02 25 4
gpt4 key购买 nike

我正在使用 PRISM 开发适用于 iOS 的示例 Xamarin.Forms 应用。

但是当我尝试在 ViewModel 中使用 INavigationService 时,它​​失败了,说接口(interface) INavigationService 的依赖失败

我不知道我做错了什么,我们如何解决它或者它是 INavigationServices 注入(inject)中的错误。

谢谢迪维基兰·拉维拉

代码如下

    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 的使用。如果您不使用它,则无法注入(inject)该服务。不要手动解析您的 VM,而是使用 ViewModelLocator.AutowireViewModel 附加属性。此外,你不想那样使用你的容器。使用 DI 时,您只需要一个合成根。

此外,我建议使用最新的 6.1 预览版。它有大量的导航改进。

关于c# - Xamarin 的 Prism,INavigationService 的依赖失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34623087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com