2012-04-13 109 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