从Backstack中删除关联页面时,从内存中清理viewmodel - WP8.1

时间:2015-03-01 09:31:14

标签: c# mvvm navigation windows-phone-8.1 mvvm-light

在我的应用程序中有几页说 - A,B,C与它们各自的ViewModel相关联 - VMA,VMB,VMC。当用户到达页面C时,我想从backstack中删除页面B,并从ViewmodelLocator的容器中删除它的ViewModel(VMB)。

结果应为b A-> C

我是MVVM灯的新手。有没有办法实现这个目标?

更新

我可以通过设置框架的导航状态从backstack中删除页面。如何删除viewmodel引用以防止内存泄漏?

2 个答案:

答案 0 :(得分:1)

SimpleIoc提供取消注册(TClass实例)重载,以删除实例。

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

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

答案 1 :(得分:0)

现在我正在跟踪流量并从ViewModelLocator中删除它们。这是我在两个实例上做的

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

我将来会重新考虑这个,并尝试使用更新的mvvm灯库。如果有人找到更好的方法,请建议。