Я только что столкнулся с печально известной проблемой / проблемой в WP7. скажем, у меня есть 3 страницы, FirstPage.xaml, SecondPage.xaml и ThirdPage.xaml. естественный поток будет:
FirstPage.xaml -> SecondPage.xaml -> ThirdPage.xaml
другими словами,
главная страница -> страница со списком объектов -> страница, подробно отображающая один объект с предыдущей страницы
когда я перехожу из FirstPage.xaml в SecondPage.xaml, мне нужно выполнить запрос к базе данных, чтобы получить список в SecondPage.xaml. Затем мне нужно перейти к ThirdPage.xaml из SecondPage.xaml (после того, как я выберу один MyObject из списка). в этот момент надгробие становится очень запутанным для меня.
Я знаю, что при переходе FirstPage.xaml -> SecondPage.xaml вызывается конструктор SecondPage.xaml.cs. я знаю, что при переходе в ThirdPage.xaml -> SecondPage.xaml (возвращаясь назад, нажимая кнопку «Назад» или NavigationService.GoBack ()), конструктор SecondPage.xaml.cs НЕ вызывается. когда я перехожу из SecondPage.xaml в ThirdPage.xaml, я сохраняю объекты модели представления (VM) в PhoneApplicationService.Current.State (SecondPage.xaml.cs.OnPageNavigatedFrom ()).
моя (ошибочная) стратегия была, ну, если конструктор SecondPage.xaml.cs вызывается в одном экземпляре (FirstPage.xaml -> SecondPage.xaml), но не в другом экземпляре (ThirdPage.xaml -> SecondPage .xaml), тогда я могу установить логический флаг в конструкторе, делать ли новый запрос к БД или восстанавливать состояние страницы (из PhoneApplication.Current.State). логический флаг изначально имеет значение false и устанавливается только в true в конструкторе SecondPage.xaml.cs.
Я думал, что это сработало хорошо, но затем, когда я нажал кнопку «Пуск», чтобы выйти из приложения, а затем нажал кнопку «Назад», чтобы вернуться в приложение, был вызван конструктор SecondPage.xaml.cs. поэтому я делаю еще один свежий запрос к БД вместо восстановления состояния, которое НЕ является предполагаемым поведением.
У меня такой вопрос: как узнать, когда выполнить новый запрос к БД против восстановления, когда пользователь нажимает кнопку «Пуск», а затем обратно, чтобы попасть в приложение? я думал о том, как решить это сам, но большинство из того, что я придумал, были клуджес; это казалось неестественным и как будто я возился, чтобы заставить вещи работать. например, я подумал, что могу передать строку запроса из FirstPage.xaml в SecondPage.xaml (т.е. /SecondPage.xaml?freshDbQuery=1), но когда я перехожу из ThirdPage.xaml обратно в SecondPage.xaml, это значение ключа строки запроса pair, freshDbQuery = 1, всегда так! (как вы можете сказать, я не очень хорошо знаю wp7).
любая помощь приветствуется.