Решение странной проблемы навигации Windows Phone 7 - PullRequest
0 голосов
/ 20 февраля 2011

У меня действительно странная проблема, связанная с тем, как я управляю навигацией в приложении, и это приложение теперь отклоняется из AppHub (после того, как его несколько раз успешно утвердили на одной и той же базе кода ... grr)

  1. В настоящее время я фиксирую первую навигацию приложения и перенаправляю ее на страницу «Добавить элемент» в App.cs, используя найденный пример здесь
  2. , а затем пользователь добавляет"item"
  3. пользователь снова попадает на "главную" страницу, но остается там, теперь есть 1 "item" для отображения в списке
  4. , после чего пользователь может просматриватьстраница "деталь" этого элемента, где они могут выбрать, чтобы удалить текущий элемент.когда они делают это, я снова перенаправляю их на «главную» страницу.
  5. эта навигация запускает то же самое, что произошло на шаге 1, и они направляются на страницу «добавления»

проблема с описанным выше процессом заключается в том, что если пользователь нажимает «назад» на перенаправленной странице на шаге 5, он никуда не уходит, поскольку перенаправляется обратно на текущую страницу (поскольку на предыдущей странице нет элементов)и это запускает событие маршрутизации app.cs, чтобы перенести их на страницу добавления).если бы я разрешил им вернуться назад, фактическая первая страница, на которую они могли бы вернуться, - это 3 шага навигации, когда они впервые добавили элемент - как они находятся на «добавить элемент»уже на странице, это было бы бессмысленно.

Тестеры магазина apphub говорят, что в этом случае приложение должно закрыться.Я действительно не знаю, как, черт возьми, я должен это сделать, так как нет действия «вернуться до конца», которое я могу вызвать ...

мыслей?

Ответы [ 2 ]

3 голосов
/ 20 февраля 2011

Когда пользователь решает «удалить» текущий элемент, вы не должны перемещаться вперед на главную страницу, оставляя удаленный элемент в стеке навигации.Вы должны перейти назад на главную страницу.Таким образом, стек навигации будет пустым, и если они вернутся назад, приложение закроется.

(Конечно, то же самое верно и в шаге 3 - когда элемент добавлен, перейдите назад на главную страницу. Вы не хотите, чтобы страница «добавления» была частью стека навигации; это действие было выполнено.)

1 голос
/ 20 февраля 2011

Единственный лучший совет, который я прочитал о навигации по WP7, был: «Если вам не нужно, не используйте его». Я почти прекратил использовать все это вместе и просто использую «MainPage.xaml» для загрузки / выгрузки пользовательских элементов управления, которые делают подобные вещи. Я полностью контролирую кнопку «Назад» по мере необходимости. Это спасло меня от головной боли. Важно понимать, что страницы навигации на самом деле имитируют веб-сайт и его страницы - многие приложения не соответствуют этой парадигме (так как это приложения, а не веб-сайты). Поэтому, если вам не нужно использовать навигацию, не используйте ее.

Таким образом, в вашем случае, если вы просто управляете всем на MainPage.xaml, вы должны использовать несколько операторов If / Then в OnBackKeyPress, и если вы соответствуете вашим критериям, выполните e.Cancel = true; и покажите / загрузите / и т.д. , твоя вещь. Если нет, то пусть приложение само по себе перемещается - т.е. завершается.

Для захоронения, просто позвольте OnNavigatedTo в MainPage.xaml обрабатывать загрузку правильного пользовательского элемента управления, полученного из информации, захороненной из захоронения, полученной из Application_Activated.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...