【问题标题】:how to kill a ViewModel Instance from the ViewModelLocator (mvvmlight-toolkit)如何从 ViewModelLocator 中杀死 ViewModel 实例(mvvmlight-toolkit)
【发布时间】:2012-04-13 08:09:20
【问题描述】:

我正在开发一个基于 en WPF(MVVM 模式)的桌面应用程序 我正在使用 MVVMLight-Toolkit, 在我的应用程序中有一个用户认证系统。 问题是:假设我有一个 ViewA,它的 dataContext 由 ViewModelA 定义。 假设用户 1 登录到应用程序并导航到视图 A,他做了一些事情,然后断开连接。当另一个用户或同一个用户再次登录并导航到同一个 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>();
    }

但它不起作用,上下文被保留。 你能帮我解决这个问题吗? 谢谢

【问题讨论】:

    标签: wpf viewmodel mvvm-light


    【解决方案1】:

    我找到了解决方案 我必须释放使用 ViewModel 实例作为数据上下文的视图 当我打电话时

    SimpleIoc.Default.Unregister();

    为类型 T 创建的所有 ViewModel 实例将被自动删除

    【讨论】:

    • “我必须释放视图”是什么意思?我遇到了和你一样的问题,还没有找到解决办法。
    猜你喜欢
    • 2015-07-08
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    相关资源
    最近更新 更多