如何使用MVVMLight SimpleIoc?

我正在修改我的软件Messenger.Default(...)位混乱。

有没有任何备忘单知道MVVMLight SimpleIoc使用(而不是一般的IoC描述)?

SimpleIoc床单:

1)您在ViewModelLocator中注册所有的接口和对象

 class ViewModelLocator { static ViewModelLocator() { ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); if (ViewModelBase.IsInDesignModeStatic) { SimpleIoc.Default.Register<IDataService, Design.DesignDataService>(); } else { SimpleIoc.Default.Register<IDataService, DataService>(); } SimpleIoc.Default.Register<MainViewModel>(); SimpleIoc.Default.Register<SecondViewModel>(); } public MainViewModel Main { get { return ServiceLocator.Current.GetInstance<MainViewModel>(); } } } 

2)默认情况下,每个对象都是单例。 要parsing一个对象,使其不是一个单例,你需要传递一个唯一的值给GetInstance调用:

 SimpleIoc.Default.GetInstance<MainViewModel>(Guid.NewGuid().ToString()); 

3)通过接口注册一个类:

 SimpleIoc.Default.Register<IDataService, Design.DesignDataService>(); 

4)通过接口注册具体对象:

 SimpleIoc.Default.Register<IDataService>(myObject); 

5)注册具体types:

 SimpleIoc.Default.Register<MainViewModel>(); 

6)从接口parsing对象:

 SimpleIoc.Default.GetInstance<IDataService>(); 

7)直接parsing对象(构build和依赖parsing):

 SimpleIoc.Default.GetInstance<MainViewModel>(); 

8)MVVM使得devise时数据非常简单:

 if (ViewModelBase.IsInDesignModeStatic) { SimpleIoc.Default.Register<IDataService, Design.DesignDataService>(); } else { SimpleIoc.Default.Register<IDataService, DataService>(); } 

如果您处于devise时模式,它将自动注册您的devise时服务,使得在VSdevise器中工作时,您的视图模型和视图中的数据变得非常简单。

希望这可以帮助。