Создание нового экземпляра объекта каждый раз, когда вызывается метод

Messenger.Default.Register<OpenWindowMessage>(this, message =>
{
    var adventurerWindowVM = SimpleIoc.Default.GetInstance<AdventurerViewModel>();
    adventurerWindowVM.Adv = message.Argument;
    var adventurerWindow = new AdventurerView() 
    {
        DataContext = adventurerWindowVM
    };
    adventurerWindow.Show();
});

Этот код довольно прост; он просто открывает новое окно и устанавливает DataContext нового окна. У меня проблема в том, что если я выполню это дважды, содержимое первого экземпляра будет перезаписано и будет установлено на содержимое второго, так какadventurerWindowVM является DataContext обоих окон, и он перезаписывается при каждом вызове этого кода. Я ищу способ предотвратить это; Я хотел бы иметь возможность открывать несколько окон, используя это сообщение, и каждое из них должно быть уникальным, но до сих пор я не нашел способ сделать это. Любой совет будет принята с благодарностью. Я прошу прощения за смутное название; Я не был уверен, что назвать этот вопрос. (Также я знаю, что это не метод. Как будет называться этот блок кода?)

Обновить: Я использую MVVM Light, и мой код основан на примере, который мне предоставили в этом ответе:https://stackoverflow.com/a/16994523/1667020

Вот некоторый код из моего ViewModelLocator.cs

public ViewModelLocator()
{
    _main = new MainViewModel();

    ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
    SimpleIoc.Default.Register<GameViewModel>();
    SimpleIoc.Default.Register<AdventurerViewModel>();
}

Ответы на вопрос(3)

Ваш ответ на вопрос