C#, Windows Phone 7, Използване на инструкция if-else за проверка коя страница се показва

Сега разработвам приложение за 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, за да проверя коя страница се показва в момента и след това да реша дали да навигирам или да остана в текущата страница.


person Jason Chong    schedule 27.03.2011    source източник


Отговори (2)


Бутон click1 трябва да бъде премахнат от главната страница. Няма смисъл да има този бутон там.

Другите страници трябва да използват бутона за връщане назад към главната страница. В противен случай ще объркате задния си стак.

person Steve Chadbourne    schedule 27.03.2011
comment
объркате задния стек? искаш да кажеш да премахнеш напълно лентата с приложения? - person Jason Chong; 27.03.2011
comment
Трябва да имате една лента с приложения на страница, която е персонализирана за страницата. Едно нещо, което трябва да избягвате, е страница 1 да отиде на страница 2, след което бутон на страница 2 да се върне към страница 1. Задният стек (като хронология на браузъра) вече има p1, p2, p1. Назад от първата страница трябва да излезе от приложението, но ако натиснете бутона за връщане назад, ще отиде на p2. Решението е да позволите на потребителя да използва бутона за връщане назад от p2 към p1. - person Steve Chadbourne; 27.03.2011
comment
една лента с приложения на страница, която е персонализирана за страницата, благодаря за съветите, персонализирах моята лента с приложения за всяка страница :) - person Jason Chong; 29.03.2011

Изглежда, че използвате ApplicationBar, както бихте използвали TabBar в iPhone (или подобен в Android, Bada и т.н.)

В WP7 стилът на Metro обикновено е да се използва Pivot или Panorama, а не „Tab Bar“ за този тип навигация.

Ако все пак искате да използвате ApplicationBar по този начин:

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

Също така, имайте предвид, че ако се опитате да навигирате от MainPage.xaml до същия url MainPage.xaml, тогава ще видите изключение - доколкото си спомням, услугата за навигация се оплаква от URL фрагменти, които не се поддържат.

person Stuart    schedule 27.03.2011