Использование легкого обмена сообщениями MVVM вместо строк запросов в Windows Phone - PullRequest
1 голос
/ 17 сентября 2010

Я пытаюсь использовать легкий обмен сообщениями MVVM для отправки значения с одной страницы на другую во время навигации (например, отправка идентификатора элемента, выбранного на странице редактирования). Таким образом, viewmodel страницы списка отправляет сообщение, а затем отправляет навигационное сообщение в представление, которое перенаправляет на страницу редактирования. Модель представления страницы редактирования создается только тогда, когда происходит переход к странице. Поэтому, когда я регистрируюсь для этого события в viewmodel страницы редактирования, я никогда не получаю сообщение? Каково лучшее решение для этого?

Заранее спасибо.

1 Ответ

3 голосов
/ 21 сентября 2010

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

Однако, если вы хотите продолжить по этому пути, вы можете изменить свой ViewModelLocator таким образом, чтобы ViewModel вашей страницы создавался немедленно (например, в ctor), а не по мере необходимости. Поскольку ViewModelLocator создается сразу после загрузки вашего App.xaml, вы знаете, что любые модели представлений будут созданы немедленно. Пока ваша модель представления регистрируется для сообщений в своем конструкторе, она должна получать сообщение.

...