Немного о панораме. Программный контроль
Привет всем. Это уже 10 пост в цикле Windows Phone 7 для начинающих. Мы с вами поговорили довольно о многих вещах, но все же осталось еще больше. Сегодня мы немного поговорим о контроле Панорама. Я наблюдал за развитием платформы еще с первого анонса и был просто невероятно рад, когда увидел эту штуку. Вся прелесть состоит в том, что у нас есть страница, которая продолжается вправо и влево на несколько экранов. Пару дней назад мне понадобилось создать приложение, использующее панораму. Сделав интерфейс, я впал в замешательство: А как же мне программно менять контент на страницах? Немного погуглив, я бросил эту затею и решил разобраться сам. Для начала, давайте посмотрим из чего же все-таки состоит панорама. Хорошая картинка есть на сайте проекта, вот она: итак, у нас есть набор объектов типа PanoramaControlItem, которые содержат в себе контент. Задача: в зависимости от того что мы выбираем на первой странице, изменить контент на второй и перейти к нему. У Объекта панорама есть несколько интересных свойств:
А ключевым событием является SelectionChanged. Давайте создадим простое приложение. Добавим в него Panorama нажав правой кнопкой на проекте и выбрав Add->New Item... Выбираем Windows Phone Panorama Page и жмем Add. Что бы сделать ее стартовой, необходимо перейти в WMAppManifest.xml и в строке
Указать свое имя страницы в NavigationPage. Теперь добавим немного контента на страницу. Вот вырезка из PanoramaPage.xaml:
Заметьте, я явно указал имя для PanoramaItem, хотя доступ к ним можно осуществлять и при помощи коллекции PanoramaControls.Items, просто зная индекс нужного PanoramaItem. Для того что бы зафиксировать переход между элементами панорамы, нам необходимо подписаться на событие SelectionChanged
А теперь, собственно, смотрим на код:
Метод NumberToDisplay_SelectionChanged позволяет нам отслеживать по какому из элементов списка мы нажали и записывать текст этого элемента во второй список. Pan.DefaultItem = SecondItem; позволит нам подставить вторую страничку после выбора элемента на первой. Метод Panorama_SelectionChanged: В аргументах есть хорошее свойство RemovedItems(По аналогии есть и AddedItems), в котором хранится объект(тут PanoramaItem) с которого мы перешли к текущему PanoramaItem. Мы воспользуемся этим для того, что бы снять выделение со списка при переходе назад к первой странице. |