Bei jedem Aufruf einer Methode wird eine neue Instanz eines Objekts erstellt

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

Dieser Code ist ziemlich einfach; Es wird nur ein neues Fenster geöffnet und der Datenkontext des neuen Fensters festgelegt. Das Problem, das ich habe, ist, dass, wenn ich dies zweimal ausführe, der Inhalt der ersten Instanz überschrieben und auf den der zweiten Instanz seitdem gesetzt wirdadventurerWindowVM ist der Datenkontext beider Fenster und wird bei jedem Aufruf dieses Codes überschrieben. Ich suche nach einer Möglichkeit, dies zu verhindern. Ich möchte in der Lage sein, mehrere Fenster mit dieser Nachricht zu öffnen und jedes davon einzigartig zu machen, aber bisher habe ich keinen Weg gefunden, dies zu tun. Jeder Rat wäre sehr dankbar. Ich entschuldige mich für den vagen Titel; Ich war mir nicht sicher, wie ich diese Frage benennen sollte. (Außerdem weiß ich, dass dies keine Methode ist. Wie würde dieser Codeblock heißen?)

Aktualisieren: Ich verwende MVVM Light und mein Code basiert auf einem Beispiel, das mir in der folgenden Antwort zur Verfügung gestellt wurde:https://stackoverflow.com/a/16994523/1667020

Hier ist ein Code aus meiner ViewModelLocator.cs

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

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

Antworten auf die Frage(3)

Ihre Antwort auf die Frage