2012-04-13 107 views
1

我正在開發基於WPF(MVVM模式)的descktop應用程序 而我正在使用MVVMLight-Toolkit, 在我的應用程序中有一個用戶認證。 問題是:假設我有一個ViewA,它的dataContext由ViewModelA定義。 假設用戶1登錄到應用程序並導航到viewA,他做了一些事情,然後他斷開連接。當另一個用戶或同一用戶再次登錄並導航到相同的ViewA時,他會找到上一個用戶的最新上下文。 我想殺掉ViewModel Created的實例併爲新用戶創建一個新實例。 我試圖註冊方法添加到ViewModelLocator如何從ViewModelLocator中刪除ViewModel實例(mvvmlight-toolkit)

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

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

,但它不工作時,上下文留了下來。 你能幫我解決這個問題嗎? THX

回答

2

我發現溶液 我必須釋放正在使用視圖模型的實例作爲一個DataContext 視圖當我打電話

SimpleIoc.Default.Unregister();

爲T型創建的所有ViewModel實例將被自動刪除

+2

您對「我必須釋放視圖」有什麼意義?我遇到了同樣的問題,並找不到解決方案。 – Joel 2013-06-11 11:35:00