当相关页面从后台堆栈中移除时,从内存中清除视图模型 - WP8.1
Clean viewmodel from memory when their associated pages are removed from backstack - WP8.1
在我的应用程序中,有几页说 - A、B、C,它们与各自的 ViewModels - VMA、VMB、VMC 相关联。当用户到达页面 C 时,我想从后台堆栈中删除页面 B,并从 ViewmodelLocator 的容器中删除其 ViewModel (VMB)。
结果应该是b A->C
我是 MVVM light 的新手。有什么办法可以实现吗?
更新
我可以通过设置框架的导航状态从后台删除页面。如何删除视图模型引用以防止内存泄漏?
SimpleIoc 提供了一个 Unregister(TClass instance) 重载,用于删除一个实例。
您可以在页面的终结器中使用它,但如果 VM 在其他页面上使用或有多个实例,则必须检查副作用。
顾名思义,simpleIoc非常简单,不提供自动方式
现在我正在跟踪流并将它们从 ViewModelLocator 中删除。我在两个实例中这样做
1) 当用户从当前页面返回时
2)当用户导航到页面 B 时,该页面 A 将从历史记录中清除。我从 ViewModelLocator 的容器中删除 A 的视图模型并调用其清理以清除其资源。
我以后会重新审视这个并尝试使用更新的 mvvm light 库。如果有人找到更好的方法,请提出建议。
在我的应用程序中,有几页说 - A、B、C,它们与各自的 ViewModels - VMA、VMB、VMC 相关联。当用户到达页面 C 时,我想从后台堆栈中删除页面 B,并从 ViewmodelLocator 的容器中删除其 ViewModel (VMB)。
结果应该是b A->C
我是 MVVM light 的新手。有什么办法可以实现吗?
更新
我可以通过设置框架的导航状态从后台删除页面。如何删除视图模型引用以防止内存泄漏?
SimpleIoc 提供了一个 Unregister(TClass instance) 重载,用于删除一个实例。
您可以在页面的终结器中使用它,但如果 VM 在其他页面上使用或有多个实例,则必须检查副作用。
顾名思义,simpleIoc非常简单,不提供自动方式
现在我正在跟踪流并将它们从 ViewModelLocator 中删除。我在两个实例中这样做
1) 当用户从当前页面返回时 2)当用户导航到页面 B 时,该页面 A 将从历史记录中清除。我从 ViewModelLocator 的容器中删除 A 的视图模型并调用其清理以清除其资源。
我以后会重新审视这个并尝试使用更新的 mvvm light 库。如果有人找到更好的方法,请提出建议。