2012-04-13 5 views
1

Ich bin eine descktop Anwendung basierte en WPF (MVVM Muster) developping und ich bin MVVMLight-Toolkit, In meiner Anwendung gibt es ein System von Benutzerauthentifizierung. Das Problem ist: Sagen wir, dass ich eine ViewA habe, deren DataContext durch ein ViewModelA definiert ist. Angenommen, Benutzer1 wird in der Anwendung protokolliert und navigiert zur Ansicht A, er macht ein paar Sachen und danach trennt er die Verbindung. Wenn sich ein anderer Benutzer oder derselbe Benutzer erneut anmeldet und zum selben ViewA navigiert, findet er den letzten Kontext des vorherigen Benutzers. Ich möchte die Instanz von ViewModel Created löschen und eine neue für den neuen Benutzer erstellen. Ich versuchte, ein Registrierungsverfahren zum ViewModelLocatorwie ein Ansichtsmodell Instanz vom ViewModelLocator (mvvmlight-Toolkit) zu töten

public static void RegisterViewModel<T>() where T : ViewModelBase 
    { 

     if (SimpleIoc.Default.IsRegistered<T>() 
      SimpleIoc.Default.Unregister<T>(); 
     SimpleIoc.Default.Register<T>(); 
    } 

hinzufügen, aber es funktioniert nicht, wird der Kontext geblieben. können Sie mir helfen, dieses Problem zu lösen? thx

Antwort

2

fand ich die Lösung ich die Ansicht befreien, die die Instanz von Viewmodel als Datacontext verwendet, und wenn ich rufe

SimpleIoc.Default.Unregister();

alle Ansichtsmodell-Instanz für den Typ T erstellt automatisch

+2

entfernt werden, was Sie unter „Ich habe den Blick frei“? Ich stoße auf das gleiche Problem wie du und konnte noch keine Lösung finden. – Joel