@artemvalieiev

Как сохранить состояние ViewModel после навигации на такую же страницу с другими параметрами для ViewModel?

К примеру у меня есть view, которая описывает текущую комнату в viewModel , из комнаты я могу перейти в другую комнату с такой же viewModel , куда передам параметры новой комнаты , но если я нажму назад NavigationService , перейдет назад view комната , а viewModel сохранит состояние новой комнаты , т.е. обновление Viw не произойдет на предыдущее.
Как решить эту проблему? Сохранять stack viewmodel для каждого к примеру id комнаты и использовать его во время навигации?Я так понимаю это типичная ситуация , похожа на redo,undo (Command pattern)?Или еще более подходит Memento?
  • Вопрос задан
  • 2825 просмотров
Решения вопроса 1
aush
@aush
Вам не нужно сохраняться предыдущие состояния и перебрасывать их между вьюхами. Хорошая архитектура такая: у вас есть репозиторий, в котором находятся данные о комнатах, комнаты вы можете уникально идентифицировать. Когда вы хотите отобразить вьюху для комнаты с заданным идентификатором, вы запрашиваете у репозитория доменную модель комнаты, мапите ее на вьюмодель и используете эту вьюмодель для отображения вьюхи. Т.о. у вас не будет такого понятия как "переход от вьюхи одной комнаты к другой", у вас есть просто "отображение вьюхи для данной комнаты".
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@artemvalieiev Автор вопроса
Нашел, в IoC контейнере создается ViewModel с ключом или же вовсе не создаеться, во время навигации передается параметр через Frame а не через Messenger класс, вью сохраняет ключ и получает ViewModel под определенный ключ из IoC контейнера , или подгружает информацию из репозитория , в WPF или Windows Runtime или Silverlight, Frame умеют кэшировать view, в случае навигации назад, view получает viewModel по определенному ключу, или же получает информацию из репозитория для ключа.
Подробнее здесь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы