使用 Xamarin.Forms 弹出页面后如何处理 ViewModel?

2024-01-10

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

我们有一个使用 Xamarin.Forms 创建的应用程序。我们使用 Prism.Forms 来做 MVVM。当导航到新页面(压入堆栈)时,Prism.Forms 将 ViewModel 连接到页面。当向后导航(从堆栈中弹出)时,ViewModel 会在一段时间后获得 GarbageCollected。

然而问题是,在某个时间点,我们有几个相同类型的 ViewModel,它们订阅了未绑定到 View 的事件。当事件触发时,所有这些 ViewModel 都开始做他们的事情。所以我正在寻找一种在不再需要订阅时取消订阅的方法。

有没有人有办法解决吗?


您可以确保Dispose()被称为在OnDisappearing()View 的事件,如果您想确保 ViewModel 在内存中不再存在于视图中。

如果您只关心事件的订阅和取消订阅,那么最好在OnAppearing() and OnDisappearing()。在这种情况下,一旦视图不可见,您将确保视图模型上不存在任何事件处理程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Xamarin.Forms 弹出页面后如何处理 ViewModel? 的相关文章

随机推荐