我在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()