【问题标题】:MVVM Light IOC Container exampleMVVM 轻量级 IOC 容器示例
【发布时间】:2016-04-13 13:20:16
【问题描述】:

我一直在研究 Lauren Bugnion 的这篇关于 MVVM 轻量级 IOC 容器的博文,但有一件事让我很困惑。

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

我不想引用整个事情,所以我只想包括我很难理解的sn-p。

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>();
    }
  }

这个功能甚至可以访问吗?如何?

谢谢! :)

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 你能举个例子吗?因为在我的 App.cs 中它不允许我写 public static ViewModelLocator locator
    • 哇,我太傻了,错过了全班的公开课让我对真正的问题感到非常困惑。谢谢
    • 您可以通过编写类似 的内容将其添加到 XAML
    猜你喜欢
    • 2012-03-01
    • 2018-10-27
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    相关资源
    最近更新 更多