В этом уроке мы узнаем, как программно создать динамический Panorama Control в Windows Phone 7 Application Development. В наших предыдущих сериях мы видели, что такое Panorama Control и как использовать этот элемент управления (см. Статью -), который объясняет использование элемента управления. Здесь мы увидим, как мы можем программно использовать элемент управления, предоставляя необходимые данные динамически, что будет очень полезно при разработке приложений, которые включают частые манипуляции с данными.
Давайте посмотрим, как использовать этот элемент управления в реальном времени при разработке приложения для Windows Phone 7. Откройте Visual Studio 2010 и создайте новый проект Silverlight для Windows Phone 7 с допустимым именем проекта, как показано на экране ниже.
Перед началом кодирования нам нужно добавить ссылку на опцию Microsoft.Phone.Controls by Add reference и включить пространство имен в код XAML, а также удалить код по умолчанию из кода xaml, как показано на экране ниже.
Теперь давайте перейдем непосредственно к коду и начнем писать наш код, так как здесь мы собираемся программно связать элемент управления с необходимыми данными один за другим. Как мы видим, элемент управления Panorama имеет разные заголовки и элементы. Сначала давайте добавим необходимые данные для заголовков и элементов, как показано в коде ниже.
Код:
private List<string> CreatePanoramaItems(string item) { List<String> Panoramaitems = null; switch (item) { case "Page1": Panoramaitems = new List<string> { "Page1Item1", "Page1Item2", "Page1Item3"}; break; case "Page2": Panoramaitems = new List<string> { "Page2Item1", "Page2Item2", "Page2Item3" }; break; case "Page3": Panoramaitems = new List<string> { "Page3Item1", "Page3Item2", "Page3Item3" }; break; } return Panoramaitems; } private List<string> CreatePanoramaHeaders() { return new List<string> { "Page1", "Page2", "Page3" }; }
Далее следует добавить событие загрузки, при котором при загрузке страницы мы собираемся загружать динамический элемент управления панорамой заголовками и элементами по одному вместе с текстовым блоком, который также динамически создается и добавляется в элемент Panorama, как показано в коде ниже. ,
Код:
private void MainPage_Loaded(object sender, RoutedEventArgs e) { //Initializing the Panorama Control and Assigning base values Panorama panoramactrl = new Panorama(); panoramactrl.Title = "F5Debug How To"; panoramactrl.SelectionChanged += panoramaCtrl_SelectionChanged; //Initializing the Panorama Control Items PanoramaItem panoramaCtrlItem = new PanoramaItem(); panoramaCtrlItem.Header = "Dynamic Panorama"; //Initializing Textblock to display some text TextBlock textBlock = new TextBlock(); textBlock.TextWrapping = TextWrapping.Wrap; textBlock.Text = "F5debug.Net – Building and Debugging the Technology"; textBlock.FontSize = 20; panoramaCtrlItem.Content = textBlock; panoramactrl.Items.Add(panoramaCtrlItem); foreach (string Eachitems in CreatePanoramaHeaders()) { panoramaCtrlItem = new PanoramaItem(); panoramaCtrlItem.Header = Eachitems; panoramactrl.Items.Add(panoramaCtrlItem); } this.LayoutRoot.Children.Add(panoramactrl); } private void panoramaCtrl_SelectionChanged(object sender, SelectionChangedEventArgs e) { Panorama panoramactrl = (Panorama)sender; PanoramaItem panoramaItem = (PanoramaItem)(panoramactrl.SelectedItem); if (panoramaItem.Content == null) { ListBox listBox = new ListBox(); listBox.ItemsSource = CreatePanoramaItems(panoramaItem.Header.ToString()); panoramaItem.Content = listBox; } }
Полный код:
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls; namespace F5debugHowto43 { public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); this.Loaded += new RoutedEventHandler(MainPage_Loaded); } private List<string> CreatePanoramaItems(string item) { List<String> Panoramaitems = null; switch (item) { case "Page1": Panoramaitems = new List<string> { "Page1Item1", "Page1Item2", "Page1Item3"}; break; case "Page2": Panoramaitems = new List<string> { "Page2Item1", "Page2Item2", "Page2Item3" }; break; case "Page3": Panoramaitems = new List<string> { "Page3Item1", "Page3Item2", "Page3Item3" }; break; } return Panoramaitems; } private List<string> CreatePanoramaHeaders() { return new List<string> { "Page1", "Page2", "Page3" }; } private void MainPage_Loaded(object sender, RoutedEventArgs e) { //Initializing the Panorama Control and Assigning base values Panorama panoramactrl = new Panorama(); panoramactrl.Title = "F5Debug How To"; panoramactrl.SelectionChanged += panoramaCtrl_SelectionChanged; //Initializing the Panorama Control Items PanoramaItem panoramaCtrlItem = new PanoramaItem(); panoramaCtrlItem.Header = "Dynamic Panorama"; //Initializing Textblock to display some text TextBlock textBlock = new TextBlock(); textBlock.TextWrapping = TextWrapping.Wrap; textBlock.Text = "F5debug.Net – Building and Debugging the Technology"; textBlock.FontSize = 20; panoramaCtrlItem.Content = textBlock; panoramactrl.Items.Add(panoramaCtrlItem); foreach (string Eachitems in CreatePanoramaHeaders()) { panoramaCtrlItem = new PanoramaItem(); panoramaCtrlItem.Header = Eachitems; panoramactrl.Items.Add(panoramaCtrlItem); } this.LayoutRoot.Children.Add(panoramactrl); } private void panoramaCtrl_SelectionChanged(object sender, SelectionChangedEventArgs e) { Panorama panoramactrl = (Panorama)sender; PanoramaItem panoramaItem = (PanoramaItem)(panoramactrl.SelectedItem); if (panoramaItem.Content == null) { ListBox listBox = new ListBox(); listBox.ItemsSource = CreatePanoramaItems(panoramaItem.Header.ToString()); panoramaItem.Content = listBox; } } } }
Теперь, когда мы закончили с нашим кодом, просто запустите приложение, нажав F5 непосредственно на клавиатуре, или мы можем использовать опцию Build и выполнить проект из панели инструментов для запуска приложения. После успешного завершения сборки мы можем увидеть эмулятор Windows Phone с приложением и ожидаемые результаты, как показано на экранах ниже.
Экран вывода:
Итак, в этом уроке мы увидели, как программно загрузить динамический элемент управления Panorama с настроенными заголовками и элементами, и на сегодня все время заглядываю в мой блог, чтобы получать больше обновлений и информацию о них на Windows Phone. Удачного Программирования !!!