MVVM Light IOC容器示例

时间:2016-04-13 13:20:16

标签: mvvm xamarin inversion-of-control mvvm-light

我一直在研究Lauren Bugnion关于MVVM轻型IOC容器的博客文章,我有一件事让我很困惑。

这是指博客文章的链接 MVVM light IOC containers blog

我不想引用整个事情,所以我只会包含我很难理解的片段。

public class ViewModelLocator
{
  static ViewModelLocator()
  {
    ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
    if (ViewModelBase.IsInDesignModeStatic)
    {
      SimpleIoc.Default.Register<IRssService, Design.DesignRssService>();
    }
    else
    {
      SimpleIoc.Default.Register<IRssService, RssService>();
    }
    SimpleIoc.Default.Register<INavigationService, NavigationService>();
    SimpleIoc.Default.Register<MainViewModel>();
  }
  public MainViewModel Main
  {
    get
    {
      return ServiceLocator.Current.GetInstance<MainViewModel>();
    }
  }
}

现在我理解了静态构造函数和所有内容,但我无法绕过

  public MainViewModel Main
  {
    get
    {
      return ServiceLocator.Current.GetInstance<MainViewModel>();
    }
  }

此功能是否可访问?如何?

谢谢! :)

1 个答案:

答案 0 :(得分:0)

是的,只要您拥有ViewModelLocator实例,就可以访问它。例如,您可以在App.xaml中实例化一个实例,它可以通过StaticResource访问。