如何从视图模型访问Prism.ioc容器?

时间:2019-02-15 17:31:23

标签: xamarin mvvm prism

我正在重写一个使用MVVMLight的项目,该项目使用Microsoft的ServiceLocation作为Prism应用程序的容器。

这是我尝试在视图模型中重写的以下代码。

var class = ServiceLocator.Current.GetInstance<IClass>();

我知道这就是您使用Prism解决界面的方式。

var class = (iClass)containerRegistry.GetContainer().Resolve< iClass >();

我的问题是,如果您无权访问容器,如何使用接口解析viewModel中的接口?

1 个答案:

答案 0 :(得分:1)

在IContainerRegistry中的RegisterTypes中有一个名为Register的属性,您只需在其中注册您的接口和类即可。

containerRegistry.Register<IYourClass, YourClass>();

要获得视图模型的访问权限,必须将接口添加为参数

protected IYourClass _yourClass;
public LoginPageViewModel(IYourClass yourClass)
{
    _yourClass = yourClass;

}