Показаны 2 экземпляра одного и того же вида одновременно с использованием MVVM Light - PullRequest
0 голосов
/ 21 февраля 2019

Я строю приложение 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();

Мне не очень комфортно с этим изменением.Всякий раз, когда свойство вызывается, создается новый экземпляр.Я обеспокоен тем, что мое предположение - что получатель будет вызываться только один раз для каждого представления - возможно, ошибочно.

Мои вопросы:

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

...