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

问题描述 投票:0回答:1

我在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()初始化一些绑定的变量,但由于它没有初始化,因此会显示较旧的值。

c# wpf mvvm viewmodel
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.