Главная » Silverlight » Управление корневым визуальным элементом

0

Описанный выше способ изменения страницы используется чаще других, однако он подходит не во всех ситуациях. Его главный недостаток состоит в том, что новое со­держимое вставляется на существующую страницу. В предыдущем примере из-за этого в верхней части страницы постоянно выводится список. Это удобно, если список или панель инструментов должны быть всегда доступны, однако если нужно вывести совер­шенно новую страницу для решения другой задачи, это не очень удобно.

Альтернативный подход состоит в присвоении всей странице нового элемента управ­ления вместо предыдущего. Для этого в качестве корневого визуального элемента управ­ления используется простой контейнер. При необходимости можно загрузить пользова­тельские элементы в корневой элемент, а затем выгрузить. Однако учитывайте, что по­сле запуска приложения сам корневой элемент не может быть изменен. Изменять мож­но только его содержимое.

Как показано в главе 6, процедура запуска приложения Silverlight обычно создает эк­земпляр пользовательского элемента управления.

private void Application_Startup(object sender,

StartupEventArgs e)

(

this.RootVisual = new MainPage();

}

Для навигации применяется более гибкий подход — процедура создает простой кон­тейнер (например, Border) или панель (например, Grid).

// Эта решетка будет хостировать страницы

private Grid rootGrid = new GridO ;

private void Application_Startup(object sender,

StartupEventArgs e)

{

// Загрузка первой страницы this.RootVisual = rootGrid; rootGrid.Children.Add(new MainPageO ) ;

}

Теперь можно перейти к другой странице, удалив первую из решетки и добавив дру­гую. Чтобы упростить решение, можете добавить статический метод в класс Арр.

public static void Navigate(UserControl newPage) {

// Извлечение объекта текущего приложения и его // приведение к типу пользовательского // (производного) класса Арр Арр currentApp = (Арр)Application.Current;

// Замена выводимой страницы currentApp.rootGrid.Children.Clear(); currentApp.rootGrid.Children.Add(newPage);

}

Переход к другой странице выполняется с помощью следующего кода.

Арр.Navigate (new Page2());

Совет. Можете добавить анимацию и графику Silverlight для создания эффектов плавного перехода между страницами, например затенения или стирания (см. главу 10).

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии