Навигация в приложении

Введение в навигацию

Последнее обновление: 31.10.2015

Чтобы понять механизм навигации в приложении WP 8.1, рассмотрим некоторые общие моменты, на которых основана навигация.

При запуске приложения ему выделяется окно или экран смартфона. Окно представлено объектом Window. И если на планшетах и десктопах под управлением ОС Windows 8.1 мы можем использовать более одного окна, то на смартфоне мы ограничены только одним окном.

Окно содержит один единственный фрейм, который занимает все пространство окна. Фрейм представлен объектом Frame. А фрейм уже содержит страницы (представленные классом Page), которые, как правило, занимают все пространство фрейма. Таким образом, в один момент времени мы можем видеть только одну страницу.

Создание фрейма происходит в методе OnLaunched, который определен в классе App:

protected override void OnLaunched(LaunchActivatedEventArgs e)
{
// вывод счетчиков в режиме отладки
#if DEBUG
    if (System.Diagnostics.Debugger.IsAttached)
    {
        this.DebugSettings.EnableFrameRateCounter = true;
    }
#endif

	// получение фрейма окна
    Frame rootFrame = Window.Current.Content as Frame;

    // если фрейм не создан
	if (rootFrame == null)
    {
        // создание фрейма
        rootFrame = new Frame();

        rootFrame.CacheSize = 1;

        if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
        {
            // TODO: Load state from previously suspended application
        }

        // установка фрейма для текущего окна
        Window.Current.Content = rootFrame;
    }

    if (rootFrame.Content == null)
    {
        // Removes the turnstile navigation for startup.
        if (rootFrame.ContentTransitions != null)
        {
            this.transitions = new TransitionCollection();
            foreach (var c in rootFrame.ContentTransitions)
            {
                this.transitions.Add(c);
            }
        }

        rootFrame.ContentTransitions = null;
        rootFrame.Navigated += this.RootFrame_FirstNavigated;

        // установка стартовой страницы приложения
        if (!rootFrame.Navigate(typeof(MainPage), e.Arguments))
        {
            throw new Exception("Failed to create initial page");
        }
    }

    // активируем окно, если оно неактивно
    Window.Current.Activate();
}

Выполнение метода фактически начинается с получения фрейма: Frame rootFrame = Window.Current.Content as Frame. И если фрейм окажется равен null, то он создается и устанавливается в качестве фрейма окна: Window.Current.Content = rootFrame.

Затем с помощью фрейма осуществляется переход к певой странице: rootFrame.Navigate(typeof(MainPage), e.Arguments)

В конце активируется окно с фреймом, если оно неактивно: Window.Current.Activate()

Для сохранения истории переходов между страницами объект Frame имеет свойство BackStack, которое представляет объект IList<PageStackEntry>.

Теперь рассмотрим создание системы навигации в приложении.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850