Как иметь несколько уникальных экземпляров ViewModel с использованием MVVM Light?

Я довольно недавно знаком с шаблоном MVVM. Я использую MVVMLight. Мне интересно, как несколько уникальных экземпляров ViewModel с MVVM Light. Для exmaple у меня есть приложение, которое может открыть n количество окон. Каждый использует одну и ту же модель Viewmodel. Мне любопытно в MVVM, что лучше всего дать им собственный экземпляр.

Если я следую примеру MVVM Light, ViewModeLocator будет иметь только статический экземпляр, в котором каждое окно будет использоваться.

Спасибо заранее.

2 ответа

Вы не обязаны использовать ТОЛЬКО модели статического вида в локаторе модели просмотра. Этот подход имеет смысл только в том случае, если в ваших представлениях используется один и тот же экземпляр модели представления. Для вашего сценария вы просто обновите экземпляр своей модели представления и назначьте ее свойству DataContext каждого создаваемого вами окна.

public void ShowChildWindow(Window parent)
{
 var window = new WindowView();
 window.DataContext = new ViewModel();
 window.Show();
}


Легко:

public EndingViewModel EndingViewModel
{
 get 
 { 
 return ServiceLocator.Current.GetInstance<endingviewmodel>(Guid.NewGuid().ToString()); 
 }
}
</endingviewmodel>

При разрешении службы ServiceLocator убедитесь, что вызов GetInstance передает уникальное значение методу. В приведенном выше примере я передаю указатель.

Я действительно не буду строить ваши объекты вручную, так как это победит точку с контейнером Injection Dependency в MVVM Light.

licensed under cc by-sa 3.0 with attribution.