MVVM轻型IOC容器示例

MVVM轻型IOC容器示例,mvvm,xamarin,inversion-of-control,mvvm-light,Mvvm,Xamarin,Inversion Of Control,Mvvm Light,我一直在研究Lauren Bugnon关于MVVM轻型IOC容器的这篇博文,我发现有一件事让我很困惑 这里有一个到博客帖子的链接 我不想引用整件事,所以我只想包括我很难理解的片段 public class ViewModelLocator { static ViewModelLocator() { ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); if (ViewModelBase.IsInDe

我一直在研究Lauren Bugnon关于MVVM轻型IOC容器的这篇博文,我发现有一件事让我很困惑

这里有一个到博客帖子的链接

我不想引用整件事,所以我只想包括我很难理解的片段

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>();
    }
  }
}
公共类ViewModelLocator
{
静态ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(()=>SimpleIoc.Default);
if(ViewModelBase.IsIndesignatic)
{
SimpleIoc.Default.Register();
}
其他的
{
SimpleIoc.Default.Register();
}
SimpleIoc.Default.Register();
SimpleIoc.Default.Register();
}
公共主视图模型主视图
{
得到
{
返回ServiceLocator.Current.GetInstance();
}
}
}
现在我理解了静态构造函数和所有东西,但我无法理解

  public MainViewModel Main
  {
    get
    {
      return ServiceLocator.Current.GetInstance<MainViewModel>();
    }
  }
public Main视图模型Main
{
得到
{
返回ServiceLocator.Current.GetInstance();
}
}
这个功能甚至可以访问吗?怎么做


谢谢!:)

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

您能举个例子吗?因为在我的App.cs中,它不允许我编写
公共静态ViewModelLocator定位器
哇,我真蠢,错过了课前的一个公共窗口让我非常困惑到底是什么问题。感谢您可以通过编写以下内容将其添加到XAML中