代码之家  ›  专栏  ›  技术社区  ›  Milan Aggarwal

从后台删除相关页面时,从内存中清除视图模型-WP8.1

  •  2
  • Milan Aggarwal  · 技术社区  · 9 年前

    在我的应用程序中,有几个页面称为-a、B、C,它们与各自的ViewModels-VMA、VMB、VMC相关联。当用户到达页面C时,我希望从backback中删除页面B,并从ViewmodelLocator的容器中删除其ViewModel(VMB)。

    结果应为b A->C

    我是MVVM灯的新手。有没有办法实现这一点?

    更新

    通过设置框架的导航状态,我可以从后台删除页面。如何删除视图模型引用以防止内存泄漏?

    2 回复  |  直到 9 年前
        1
  •  1
  •   Kai Brummund    9 年前

    SimpleIoc提供了 注销(TClass实例) 重载,以删除实例。

    您可以在页面的终结器中使用它,但如果VM用于其他页面或存在多个实例,则必须检查副作用。

    顾名思义,simpleIoc非常简单,并没有提供自动方式。

        2
  •  0
  •   Milan Aggarwal    9 年前

    目前,我正在跟踪流并从ViewModelLocator中删除它们。这是我在两个例子中所做的

    1) 当用户从当前页面导航回来时 2) 当用户导航到页面B时,此页面A将从历史记录中清除。我从ViewModelLocator的容器中删除了A的视图模型,并调用其清理来清除其资源。

    我将在未来重新讨论这个问题,并尝试使用更新的mvvm灯库。如果有人找到更好的方法,请提出建议。