将View从屏幕上移除后,如何销毁ViewModel对象

时间:2019-04-24 06:51:22

标签: c# wpf mvvm 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()初始化一些已绑定的变量,但是由于未初始化,因此显示了较早的值。

1 个答案:

答案 0 :(得分:0)

如果我理解您的正确,解决方法是将属性的初始化移至VM(ViewModel)上的方法。我们将其命名为Reset()

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

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