Работаете с ViewModels в MVVM Light? - PullRequest
1 голос
/ 02 февраля 2012

По сути, я создал свое приложение, полностью используя код, и теперь я перехожу на MVVM. Одна из проблем, с которой я сталкиваюсь, заключается в том, как бороться с ViewModels, которые сохраняются в памяти.

Например, в первой версии моего приложения я знал, как только пользователь нажал кнопку «Назад» на определенной странице, что представление будет отменено и что все будет очищено, но когда я начал использовать ViewModel и перешел на страницу он использовал ViewModel, который был создан во время предыдущего перехода на страницу (другими словами, конструктор не был вызван).

Теперь это так, как это должно работать? Я бы предпочел, чтобы я заново создавал ViewModel при каждом переходе вперед и отказывался от него при каждом ответном ударе. Но, как я уже сказал, это ново для меня. Должен ли я использовать ту же модель представления и каким-то образом обновить значения, чтобы они не отображали старые данные?

1 Ответ

1 голос
/ 02 февраля 2012

Вот как я очищаю модель представления, когда пользователь покидает страницу (этот код находится в файле xaml.cs):

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
        {
            if (e.NavigationMode == NavigationMode.Back)
                ViewModelLocator.ClearDetailsViewModel();

            base.OnNavigatingFrom(e);
        }

реализация ClearDetailsViewModel имеет вид

if (_detailsViewModelStatic == null) return;
 _detailsViewModelStatic.Cleanup();
_detailsViewModelStatic = null;
...