#c# #silverlight #windows-phone-7 #exit
#c# #silverlight #windows-phone-7 #выход
Вопрос:
У меня есть приложение, которое отображает страницу отказа от ответственности при первом запуске. Как только вы выберете Принять или отклонить, вы больше никогда не увидите страницу.
Однако, когда вы нажимаете клавишу «Назад», пытаясь закрыть приложение после первого запуска, вы возвращаетесь на страницу отказа от ответственности, затем, если вы нажмете ее снова, вернетесь на главную страницу, а затем снова к выходу.
Это происходит только при первом запуске приложения, но я бы хотел, чтобы приложение игнорировало страницу отказа от ответственности при нажатии клавиши back и выходе из приложения.
Существуют ли какие-либо другие варианты, кроме принудительного закрытия приложения из-за необработанной ошибки исключения?
Заранее спасибо.
Решение: добавьте приведенное ниже NavigationService.RemoveBackEntry();
на мою главную страницу.
private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e)
{
NavigationService.RemoveBackEntry();
NavigationService.RemoveBackEntry();
}
Ответ №1:
Я уверен, что есть более элегантный способ сделать это, но я спешил, поэтому я реализовал его следующим образом.
У меня есть статическое глобальное перечисление, в котором хранится последняя страница, на которой я был. Предполагая, что у вас есть страницы с именем pgDisclaimer
и pgMain
.
В OnNavigatedTo
случае pgDisclaimer
страницы проверьте, откуда взялся элемент управления. Если это пришло pgMain
, просто выполните NavigationService.GoBack()
, и вы выйдете из приложения, и пользователь никогда не увидит pgDisclaimer
страницу (даже не мерцание).
Редактировать: найден более элегантный способ. В Mango вы можете использовать NavigationService.RemoveBackEntry()
метод с ужасным именем.
Комментарии:
1. Это один из способов сделать это. Спасибо за предложение, но я думаю, что всплывающее окно было бы лучшим решением, если я смогу это сделать.
2. @Rhys Смотрите мое редактирование — MS решила эту проблему в Mango.
3. Спасибо.. Я использовал приведенное ниже на своей главной странице. и это работает..
private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e) { NavigationService.RemoveBackEntry(); NavigationService.RemoveBackEntry(); }
Ответ №2:
Вы должны отображать отказ от ответственности в виде всплывающего окна, а не страницы, таким образом, вам не нужно беспокоиться о проблемах с навигацией и backstack. Я видел, как это упоминалось в видео на канале 9:
Windows Phone: создание приложений, которые нравятся клиентам, от начала до конца
Конкретная часть презентации, посвященная этому, находится примерно в 26:20. Он обсуждает страницу входа в систему, которая не позволяет пользователю перейти обратно из приложения, но концепция аналогична.
Кроме того, из этого сообщения в блоге MSDN:
Я забыл совет № 1 относительно экранов лицензионного соглашения / входа в систему — не превращайте их в страницы. Если вы вместо этого сделаете их всплывающими элементами управления, вы можете показать или скрыть их в любое время (при первой навигации; когда пользователь попадает в «защищенную» часть приложения; после тайм-аута и т. Д.), И Они не занимают слот в backstack. Это должно охватывать большинство случаев.
Комментарии:
1. Если вы сможете найти эту ссылку, это было бы здорово.
2. Спасибо за это, но я выбрал
NavigationService.RemoveBackEntry();
решение