Программирование для мобильных платформ. Android и WP. Учебный курс. Иван Андреевич Трещев
Чтение книги онлайн.

Читать онлайн книгу Программирование для мобильных платформ. Android и WP. Учебный курс - Иван Андреевич Трещев страница 19

СКАЧАТЬ style="font-size:15px;">      2.12.4 Передача параметров

      Иногда требуется не просто перейти на другую страницу, но и передать ей некоторые данные с предыдущей страницы. Добавьте на первую страницу текстовое поле и кнопку под именем passParam.

      Добавьте код для обработчика щелчка кнопки

      private void passParam_Click (object sender, RoutedEventArgs e)

      {

      NavigationService.Navigate (new Uri (»/SecondPage. xaml? msg=" + textBox1.Text, UriKind.Relative));

      }

      Вы видите, что при навигации на вторую страницу мы передаем строковые данные, которые берутся из текстового поля. Чтобы получить передаваемые данные, добавьте на второй странице текстовый блок (TextBlock) под именем textBlock1. В файле SecondPage. xaml. cs создайте следующий метод:

      protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)

      {

      base. OnNavigatedTo (e);

      string msg = «»;

      if (NavigationContext.QueryString.TryGetValue («msg», out msg)) textBlock1.Text = msg;

      }

      Запустите приложение, введите текст на первой странице и убедитесь, что он отображается на второй странице.

      2.12.5 Аппаратная кнопка Back

      Одним из требований к устройствам под управлением Windows Phone 7 является наличие аппаратной кнопки Back (Назад). По умолчанию кнопка Back работает как в обычном браузере. Она автоматически запоминает посещаемые страницы приложения, а также закрывает само приложение, если приложение состоит из одной страницы или пользователь вернулся к основной странице из других страниц и больше некуда возвращаться.

      Переопределяем работу кнопки Back

      Если вас не устраивает логика работы кнопки Back по умолчанию, то вы можете переопределить ее работу в нужном вам направлении. Делается это очень просто.

      protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)

      {

      // Ваш код здесь

      e.Cancel = true; //Cancels the default behavior.

      }

      Давайте попробуем посмотреть работу переопределенной кнопки на примере. Возьмем предыдущий проект с навигацией по страницам PageNavigation и откроем редактор кода для страницы Page3.xaml. cs. Напишем следующий код:

      protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)

      {

      // Ваш код здесь

      NavigationService.Navigate (new Uri (»/page1.xaml», UriKind.Relative));

      e.Cancel = true; //Cancels the default behavior.

      }

      Запустим проект, нажмем на кнопку или ссылку Васька. Далее нажимаем аппаратную кнопку Back и убеждаемся, что теперь мы возвращаемся не на основную страницу MainPage. xaml, а на страницу Page1.xaml.

      Как видите, код работает – мы переопределили работу аппаратной кнопки под свои нужды. Но не спешите радоваться. С переопределением кнопки Back нужно быть очень осторожным. Если вы еще не закрыли пример и находитесь на странице Page1.xaml (страница Рыжика), то нажмите на Back еще раз. Как и ожидалось, вы вернетесь обратно на Page3.xaml, с которого вы пришли. Нажимаем кнопку Back и замечаем, что снова попадаем на страницу Рыжика. Получился замкнутый круг – мы больше не можем никуда попасть и попеременно оказываемся на страницах Page1.xaml и Page3.xaml.

      Поэтому тщательно тестируйте свою программу, если решили изменить поведение кнопки Back. Иначе, вы рискуете попасть в неприятную ситуацию.

      Кнопка Back для XNA-приложений

СКАЧАТЬ