Как уничтожить объект ViewModel, как только View будет удален с экрана - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть некоторый код внутри 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 голосов
/ 27 апреля 2019

Если я правильно вас понял, способ решить эту проблему - перенести инициализацию свойств в метод вашей виртуальной машины (ViewModel).Давайте назовем его Reset ()

Затем свяжите со свойствами виртуальной машины из вашего представления.

Если вы хотите сбросить значения снова при отображении представления.Я бы просто позволил любому коду, который отвечает за навигацию, вызывать Reset () на ВМ.Обычно, когда я делаю Навигацию, у меня всегда есть метод NavigatedTo () и метод NavigatedFrom () в моих ViewModels, которые я позволяю службе навигации вызывать.Таким образом, в NavigatedTo вы можете вызвать Reset ().И в конструкторе VM вы также вызвали бы Reset ()

...