Навігація

Перш ніж говорити про навігації, давайте подивимося, як додаток в Windows 8 здатне відобразити контент Мова йде саме про контент, так як розробка додатків в стилі Metro базується на відсутності оболонки біля вікна Проте, вікно в додатку присутня, воно створюється неявно, але на нього можна отримати посилання, використовуючи властивість Current класу Window Отримавши посилання на вікно програми, розробник може встановити властивість Content, Яке визначатиме вміст вікна Коли ж матеріали, повністю сформовано, його можна відобразити за допомогою методу Activate Іншими словами, якщо у Вашому додатку передбачено перехід на інші сторінки, то цього можна досягти, встановивши властивість Content в посилання на сторінку і викликавши Activate У вересневій версії Windows 8 (Platform Preview) щось подібне було реалізовано Проблема лише в тому, що даний механізм не дозволяє зберігати історію переходів, не підтримує хорошого способу передачі параметрів і тд Тому для організації навігації правильно використовувати спеціальний контейнер Frame, Який призначений для підтримки контексту навігації

Заглянемо всередину файлу Appxamlcs Тут є такі рядки:

protected override void OnLaunched(LaunchActivatedEventArgs args)

{

var rootFrame = new Frame() rootFrameNavigate(typeof(BlankPage))

WindowCurrentContent = rootFrame WindowCurrentActivate()

}

Як бачите, при запуску програми створюється обєкт типу Frame, Який встановлюється у властивістьContent За допомогою методуNavigate  обєкт типу Frame завантажує сторінку BlankPage (Імя сторінки за замовчуванням), що дозволяє відобразити її після виклику методу вікна Activate Таким чином, Frame є тим класом, який забезпечує контекст навігації, і дає доступ до ряду методів і властивостей, повязаних з навігацією:

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp CacheSize – Вказує кількість сторінок, що зберігаються в кеші при

«Глибокої» навігації

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp CanGoBack  – Визначає, чи можливо здійснити навігацію на попередню сторінку (чи була та чи є сторінка в кеші)

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp CanGoForward  – Визначає, чи можна здійснити навігацію на сторінку, яку користувач уже відвідував і з якої повернувся на попередню

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp GoBack – Виконує навігацію на попередню сторінку

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp GoForward – Виконує навігацію на наступну сторінку

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Navigated – Подія, що генерується після успішної навігації

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Navigating – Подія, яка генерується перед спробою навігації

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp NavigationFailed – Подія, яка виникає, якщо під час навігації сталася помилка (наприклад, сторінка відсутня)

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp NavigationStopped – Подія, яка генерується в той момент, коли поточна навігація була перервана за допомогою методу StopLoading або шляхом виконання іншої навігації

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp StopLoading – Завершує завантаження даних і припиняє навігацію на вказану сторінку

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Navigate   —   найважливіший метод, який дозволяє виконувати навігацію на вказану сторінку

Перераховані методи досить прості, тому реалізація навігації не складає труднощів Якщо говорити про використання цих методів у сгенерированном коді, рекомендується звернутися до файлу LayoutAwarePagecs, Який генерується при створенні будь-якого проекту Там є дуже цікавий код:

protected virtual void GoHome(object sender, RoutedEventArgs e)

{

if (thisFrame = null)

{

while (thisFrameCanGoBack) thisFrameGoBack()

}

}

Тут описаний обробник події, яке виникає при натисканні кнопки Home на панелі програми Як Ви бачите, для переходу на основну сторінку здійснена спроба повернутися на головну внаслідок гортання всіх сторінок в зворотному порядку При цьому обєкт типу Frame можна отримати через однойменну властивість обєкта Page, а потім здійснювати навігацію

Сергій Лутай, Сергій Байдачний, Windows 8 для C # розробників

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*