как использовать MVVMLight SimpleIoc?

Я обновляю свое программное обеспечение, которое имеет беспорядочные бит Messenger.Default(...) .

Есть ли чит-лист для ознакомления с MVVMLight SimpleIoc (не общее описание IoC)?

Простыни для кроватки SimpleIoc:

1) Вы регистрируете все свои интерфейсы и объекты в ViewModelLocator

 class ViewModelLocator { static ViewModelLocator() { ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); if (ViewModelBase.IsInDesignModeStatic) { SimpleIoc.Default.Register(); } else { SimpleIoc.Default.Register(); } SimpleIoc.Default.Register(); SimpleIoc.Default.Register(); } public MainViewModel Main { get { return ServiceLocator.Current.GetInstance(); } } } 

2) По умолчанию каждый объект является одиночным. Чтобы разрешить объект, чтобы он не был выделен, вам нужно передать уникальное значение вызову GetInstance:

 SimpleIoc.Default.GetInstance(Guid.NewGuid().ToString()); 

3) Чтобы зарегистрировать class по интерфейсу:

 SimpleIoc.Default.Register(); 

4) Чтобы зарегистрировать конкретный объект по интерфейсу:

 SimpleIoc.Default.Register(myObject); 

5) Зарегистрировать конкретный тип:

 SimpleIoc.Default.Register(); 

6) Чтобы разрешить объект из интерфейса:

 SimpleIoc.Default.GetInstance(); 

7) Чтобы разрешить объект напрямую (имеет разрешение на создание и зависимость):

 SimpleIoc.Default.GetInstance(); 

8) MVVM позволяет делать данные времени разработки очень просто:

 if (ViewModelBase.IsInDesignModeStatic) { SimpleIoc.Default.Register(); } else { SimpleIoc.Default.Register(); } 

Если вы находитесь в режиме времени разработки, он автоматически регистрирует ваши службы времени разработки, что делает его очень простым в использовании данных в ваших режимах просмотра и представлениях при работе в дизайнере VS.

Надеюсь это поможет.

  • Ужасная работа пользовательского контроля
  • Неправильно ли использовать Диспетчер в моей модели ViewModel?
  • В WPF есть свойство DesignMode?
  • Как включить ошибки привязки в исключения во время выполнения?
  • Разница между TargetType = "controlType" и TargetType = "{x: Тип controlType}"
  • Разница между Label и TextBlock
  • Использование управления изображением в WPF для отображения System.Drawing.Bitmap
  • Конфликты Datacontext
  • Как получить список коллекции значений из app.config в WPF?
  • Использование правил проверки WPF и отключение кнопки «Сохранить»
  • Как открыть новое окно с помощью MVVM Light Toolkit
  • Давайте будем гением компьютера.