C #, Windows Phone 7, Использование оператора if-else, чтобы проверить, какая страница отображается - PullRequest
0 голосов
/ 27 марта 2011

Сейчас я занимаюсь разработкой приложения для Windows Phone 7, в моем приложении есть три кнопки, расположенные на панели приложений.Вот обработчик событий для этих трех кнопок:

    //app bar page navigation
    private void ApplicationBarIconButton_Click1(object sender, EventArgs e)
    {
        if(//check if the current displayed page is mainpage)
        {
            //do nothing
        }
        else
        {
            NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.RelativeOrAbsolute));
        }
    }

    private void ApplicationBarIconButton_Click2(object sender, EventArgs e)
    {
        NavigationService.Navigate(new Uri("/Audios.xaml", UriKind.RelativeOrAbsolute));
    }

    private void ApplicationBarIconButton_Click3(object sender, EventArgs e)
    {
        NavigationService.Navigate(new Uri("/Statistics.xaml", UriKind.RelativeOrAbsolute));
    }

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

Поэтому я хочу использовать оператор if-else, чтобы проверить, какая страница отображается в данный момент, а затем решить, перемещаться или оставаться на текущей странице.

Ответы [ 2 ]

1 голос
/ 27 марта 2011

Похоже, что вы используете ApplicationBar, как если бы вы использовали TabBar в iPhone (или аналогично в Android, Bada и т. Д.)

В WP7 стиль Metro типично для использования Pivot или Panoramaа не «Панель вкладок» для этого типа навигации.

Если вы действительно хотите использовать ApplicationBar следующим образом:

  • , тогда вы можете (WP7 Marketplace позволит это)но пользователи могут чувствовать, что это не очень Metro.
  • , тогда вы можете рассмотреть возможность отключения соответствующей кнопки, а не просто заглушить действие.
  • , тогда вы можете обнаружить текущую отображаемую страницу, используя CurrentSource на NavigationService

Также обратите внимание, что если вы попытаетесь перейти с MainPage.xaml на тот же URL MainPage.xaml, то вы увидите исключение - насколько я помню,Навигационная служба жалуется на то, что фрагменты URL не поддерживаются.

0 голосов
/ 27 марта 2011

Кнопка click1 должна быть удалена с главной страницы.Нет смысла иметь эту кнопку там.

Другие страницы должны использовать кнопку возврата, чтобы вернуться на главную страницу.В противном случае вы испортите свой задний стек.

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