在我的应用程序中有几页说 - A,B,C与它们各自的ViewModel相关联 - VMA,VMB,VMC。当用户到达页面C时,我想从backstack中删除页面B,并从ViewmodelLocator的容器中删除它的ViewModel(VMB)。
结果应为b A-> C
我是MVVM灯的新手。有没有办法实现这个目标?
更新
我可以通过设置框架的导航状态从backstack中删除页面。如何删除viewmodel引用以防止内存泄漏?
答案 0 :(得分:1)
SimpleIoc提供取消注册(TClass实例)重载,以删除实例。
您可以在页面的终结器中使用它,但如果在其他页面上使用VM或有多个实例,则必须检查副作用。
顾名思义,simpleIoc非常简单,不提供自动方式。
答案 1 :(得分:0)
现在我正在跟踪流量并从ViewModelLocator中删除它们。这是我在两个实例上做的
1)当用户从当前页面导航回来时 2)当用户导航到页面B时,将从历史记录中清除此页面A.我从ViewModelLocator的容器中删除A的viewmodel并调用它清理以清除其资源。
我将来会重新考虑这个,并尝试使用更新的mvvm灯库。如果有人找到更好的方法,请建议。