我正在开发基于WPF(WPVM模式)的descktop应用程序 我正在使用MVVMLight-Toolkit, 在我的应用程序中有一个用户身份验证系统。 问题是:假设我有一个ViewA,它的dataContext是由ViewModelA定义的。 假设User1登录到应用程序并导航到viewA,他做了一些事情,然后断开连接。当另一个用户或同一用户再次登录并导航到同一ViewA时,他会找到前一个用户的最新上下文。 我想杀死ViewModel Created的实例,并为新用户创建一个新实例。 我尝试将注册方法添加到ViewModelLocator
public static void RegisterViewModel<T>() where T : ViewModelBase
{
if (SimpleIoc.Default.IsRegistered<T>()
SimpleIoc.Default.Unregister<T>();
SimpleIoc.Default.Register<T>();
}
但它不起作用,上下文停留。 你能帮我解决这个问题吗? THX
答案 0 :(得分:2)
我找到了解决方案 我必须释放使用ViewModel实例作为datacontext的视图 当我打电话时
SimpleIoc.Default.Unregister();
为类型T创建的所有ViewModel实例都将自动删除