如何从屏幕上删除View后立即销毁ViewModel对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从屏幕上删除View后立即销毁ViewModel对象相关的知识,希望对你有一定的参考价值。

我在InitializeDataViewer()中有一些代码,每次加载一个视图时都需要执行这些代码。我已将代码保存在ViewModel构造函数中。当我回来获取该视图时,我的问题就出现了 - 构造函数没有被执行。有没有办法销毁ViewModel对象或其他一些方法来执行构造函数代码?

public Data_Viewer_View_Model()
{
    InitializeDataViewer();//this has to be executed eachtime the view is loaded.
    dataViewerModel = new Data_Viewer_Model();

    objBackToDatabase = new ButtonCommand<string>(dataViewerModel.BackToDatabase, dataViewerModel.IsValid);
    objBackToDatabase.ReturnValueChanged += objBackToDatabase_ReturnValueChanged;
}

InitializeDataViewer()初始化一些绑定的变量,但由于它没有初始化,因此会显示较旧的值。

答案

如果我理解你是正确的,那么解决它的方法是将属性的初始化移动到VM上的方法(ViewModel)。我们把它命名为Reset()

然后从视图绑定到VM属性。

如果要在显示视图时再次重置值。我只想让任何负责导航的代码调用VM上的Reset()。通常当我进行导航时,我总是在我的ViewModel中使用NavigatedTo()方法和NavigatedFrom()方法,我让导航服务调用。所以在NavigatedTo中你可以调用Reset()。在VM构造函数中,您还可以调用Reset()

以上是关于如何从屏幕上删除View后立即销毁ViewModel对象的主要内容,如果未能解决你的问题,请参考以下文章

Viewmode原理

删除 .vagrant 文件后如何销毁虚拟机?

如何在创建后立即从全局中删除一个类?

屏幕旋转导致Activity销毁重建,ViewModel是如何恢复数据的

如何从屏幕底部向上滑出一个view-Android开发问答

图像未立即在表格视图中加载