温馨提示:本文翻译自stackoverflow.com,查看原文请点击:mvvm - How to Dispose a ViewModel after Popping a page with Xamarin.Forms?
xamarin.forms mvvm prism

mvvm - 使用Xamarin.Forms弹出页面后如何处置ViewModel?

发布于 2020-03-27 16:16:49

我想做的是在不再需要ViewModel时取消订阅事件。我尝试实现IDisposable,但没有人调用Dispose(),而不是Xamarin.Forms或Prism.Forms。

我们有一个使用Xamarin.Forms创建的应用程序。我们使用Prism.Forms进行MVVM。导航到新页面(堆叠时)时,Prism.Forms将ViewModel连接到页面。向后导航(从堆栈弹出)时,ViewModel会在一段时间后变为GarbageCollected。

但是问题是,在某个时间点上,我们有几个相同类型的ViewModel,它们都订阅了未绑定到View的事件。当事件触发时,所有这些ViewModel都会开始执行其操作。因此,我正在寻找一种不再需要订阅的方式来取消订阅。

有没有人有办法解决吗?

查看更多

查看更多

提问者
Jacco Dieleman
被浏览
96
Rohit Vipin Mathews 2016-08-25 17:44

您可以确保Dispose()在称为OnDisappearing()视图的情况下,如果你想确保视图模型不超过视图内存不再出现。

最好只关心事件的订阅和退订,然后在OnAppearing()和中进行操作OnDisappearing()在这种情况下,一旦视图不可见,您将确保视图模型上不存在任何事件处理程序。