Я строю приложение C # WPF, используя MVVM Light.Мне нужно показать 2 разных экземпляра одного и того же представления, причем оба имеют свою собственную модель представления.Но в ViewModelLocator (который я основал на примерах, показанных автором MVVM Light) всегда возвращается один и тот же экземпляр:
public class ViewModelLocator
{
public ViewModelLocator()
{
SimpleIoc.Default.Register<MainViewModel>();
SimpleIoc.Default.Register<EditorViewModel>();
}
public MainViewModel Main => ServiceLocator.Current.GetInstance<MainViewModel>();
public EditorViewModel Editor => ServiceLocator.Current.GetInstance<EditorViewModel>();
}
Это означает, что 2 вида будут использовать одну и ту же модель представления.
Во время отладки я заметил, что свойства Main и Editor извлекаются MVVM light только при построении представления.Поэтому, сделав следующее изменение, я могу создать отдельные экземпляры модели представления для каждого вызова (представления):
public MainViewModel Main => new MainViewModel();
public EditorViewModel Editor => new EditorViewModel();
Мне не очень комфортно с этим изменением.Всякий раз, когда свойство вызывается, создается новый экземпляр.Я обеспокоен тем, что мое предположение - что получатель будет вызываться только один раз для каждого представления - возможно, ошибочно.
Мои вопросы:
Есть ли лучший способ гарантировать, что каждый экземплярта же самая точка зрения имеет свою собственную модель представления?