День #4. Кнопка «Назад»

Posted on Ноябрь 17, 2010

5


Снова привет!

Как я и обещал вчера, сегодня мы поговорим о кнопке «Назад». Вообще на эмуляторе есть несколько кнопок,

Я пытался узнать в нескольких местах и даже писал в компанию по поводу изменения поведения кнопок по умолчанию, на что получил ответ: «MS have been express in not wanting apps to change the behaviour of any keys other than the back key.» Итак, мы все же имеем возможность изменить поведение кнопки назад. Ведь представьте себе, например ваше приложение выводит MessageBox, а пользователь на автомате нажимает кнопку назад. Сомневаюсь что он хотел выйти из приложения. Он просто хотел избавится от окна с сообщением. Важно понимать, что даже если вы и меняете поведение кнопки, вам не следует полностью его убирать, а следует менять его:

  1. Только в данный, текущий момент времени или для текущего состояния вашего приложения.
  2. При повторном нажатии пользователем на кнопку, дайте ему возможность покинуть ваше приложение. Не стоит удерживать пользователя 🙂
Усвоив все это, мы можем все же перейти к переопределению действия кнопки назад.
Нам необходимо подписаться на событие
BackKeyPress+=»PhoneApplicationPage_BackKeyPress»

Например на главной странице после

"<phone:PhoneApplicationPage"

. Теперь переходим к событию:

		private void PhoneApplicationPage_BackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
		{
			if (secondBackPress)
			{
				e.Cancel = false;
			}
			else
			{
				secondBackPress = true;
				e.Cancel = true;
			}
		}

Теперь после запуска приложения и нажатия в нем кнопки назад дважды, мы выйдем из приложения. Этот пример кода не обрабатывает ситуацию при которой пользователь нажмет кнопку назад второй раз «впервые». т.е. если после первого нажатия на кнопку назад он немного поработает и случайно нажмет назад вновь, то приложение закроется. Немного позже мы поговорим о «Tombstoning» или «Захоранивании» приложений по нажатию кнопки назад.
Завтра мы поговорим о навигации в Windows Phone 7 приложениях.
День #5. Навигация.

Реклама