Цель лекции: научиться создавать пивот и панораму, а также понять их структуру и предназначение.
Приложения на Silverlight, которые должны представлять пользователю большие объемы информации, традиционно используют структуру постраничной навигации. Однако для приложения, выполняющегося на телефоне, разделение на страницы не самое лучшее решение. Портретная ориентация, простота мультисенсорного ввода и приобретающие все большую популярность пользовательские интерфейсы "fluid"( "Fluid" в переводе с английского означает "подвижный", "изменчивый". Интерфейсы такого типа предполагают плавное перетекание одного экрана или страницы в другую .) – все эти факторы предлагают другие типы компоновки. Такие альтернативы представлены в Windows Phone 7 двумя новыми элементами управления:
Панорама(
Обычные приложения имеют определенные рамки размера экрана. Мы можем построить приложение, которое будет выходить за эти рамки! Панорама или пивот предоставляют нам уникальную возможность: построить наше приложение на экране увеличенного размера. Вот, пожалуй и все сходства между ними. Понимание разницы между ними поможет вам строить правильные приложения.
И
Концептуально
(рис 9.1) Панорама
Панорама пробуждает интерес. Она представляет нам контент который привлекает внимание пользователя. Типичный случай использования – когда вам необходимо собрать информацию из различных источников в одном месте. Словно обложка журнала, панорама позволяет пользователю просматривать интересующий его контент и играет роль отправной точки для начала работы с этим контентом. Вам не следует управлять приложением из панорамы, сделайте ее отправной точкой для дальнейшей навигации по приложению. Представьте себе приложение "Поваренная Книга". На панораме можно собрать такие элементы как "Рецепт дня", "Что готовят мои друзья", "Магазины с товарами не далеко от меня" или другой важный контент. Пошаговый рецепт, заметки и связь с друзьями должны быть доступны с панорамы, но эти задачи не следует размещать там. Для этого применяют пивоты.
(рис 9.2) Пивот
Если важна фильтрация, сортировка или организация содержимого в вашем приложении – то используйте пивот. Заголовки страничек в пивоте будут самыми настоящими названиями категорий, а навигация в лево и в право поможет без труда найти необходимую информацию.
В нашей "Поваренной Книге" мы используем Пивот для навигации к таким разделам как Рецепты, Избранное, что готовят друзья.
И
public class TemplatedItemsControl<T> : ItemsControl where T : new(), FrameworkElement
Здесь описывается ItemsControl, который предполагается заполнять объектами типа T. TemplatedItemsControl с заданием в качестве параметра типа PivotItem (Элемент сводного представления) или PanoramaItem (Элементы панорамы), соответственно:
public class Pivot : TemplatedItemsControl<PivotItem> public class Panorama : TemplatedItemsControl<PanoramaItem>
Предполагается, что элемент управления PivotItem, тогда как элемент управления PanoramaItem. И PivotItem, и PanoramaItem наследуются от ContentControl. Если коллекция Items объекта PivotItem или PanoramaItem; у этих элементов управления есть такое важное свойство, как Header (Верхний колонтитул), которое необходимо задать. Если же применяется привязка к свойству ItemsSource, определенному ItemsControl, эти объекты PivotItem и PanoramaItem создаются автоматически, а свойство Header задается через шаблон.
Для создания экземпляров этих элементов управления в XAML-файле необходимо объявить пространство имен XML для библиотеки и пространства имен Microsoft.Phone.Controls:
xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"
Само описание использования панорамы не подразумевает использование пивота внутри панорамы. Но многие разработчики всё же пытаются разместить пивот в панораме или наоборот. Это очень грустно, получается совсем не так классно, как в мозгах у дизайнеров и разработчиков. А пользователи просто хватаются за голову в ужасе.
Давайте разработаем наше первое серьёзное приложения, позволяющее выбирать пользователю между пивотом и панорамой. Также оно будет выводить заданный нами контент.
Для начала создадим новое Silverlight приложение PanoramaPivotControls. И на нашей главной странице добавим две кнопки, предоставляющие нам выбор:
Проект Silverlight: PanoramaPivotControls Файл: MainPage.xaml(фрагмент)
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="PANORAMA AND PIVOT CONTROLS" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="Выбирайте" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Button Content="Попробуйте панораму" Height="168" HorizontalAlignment="Left"
Margin="35,82,0,0" Name="btnPanorama" VerticalAlignment="Top" Width="383"
Click="btnPanorama_Click" />
<Button Content="Познакомьтесь с пивотом" Height="168" HorizontalAlignment="Left"
Margin="35,297,0,0" Name="btnPivot" VerticalAlignment="Top"
Width="383" Click="btnPivot_Click" />
</Grid>
На форме слева отобразились кнопки, созданные нами, теперь создадим две необходимые нам страницы. Нажимаем Project, затем Add New Item и из списка выбираем Windows Phone
В списке файлов проекта у нас появились четыре файла:
XAML – файл PanoramaPage1.xaml и его обработчик PanoramaPage1.xaml.cs, а также
XAML – файл PivotPage1.xaml и его обработчик PivotPage1.xaml.cs. Для нашего проекта нам понадобится ещё один файл – это фон для панорамы. Вы можете использовать любое изображение, подходящего формата. Желательно, чтобы оно было пропорционально вашей панораме. Я применю следующий фон, размером 800 на 600 пикселей:
(рис 9.3) Фон панорамы
Чтобы загрузить его в проект нажмите правой кнопкой мыши на название проекта в меню Solution Explorer, затем Add и Existing Item. Укажите на ваш фон, затем нажмите кнопку Add. Я назвал фон samplePhoto.jpg. В итоге наш проект состоит из следующих файлов:
(рис 9.4) Solution Explorer
Пришло время запрограммировать кнопки, для этого нажимаем на них дважды и добавляем каждой событие перехода на нужную страницу:
Проект Silverlight: PanoramaPivotControls Файл: MainPage.xaml.cs(фрагмент)
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
}
private void btnPanorama_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/PanoramaPage1.xaml", UriKind.Relative));
}
private void btnPivot_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/PivotPage1.xaml", UriKind.Relative));
}
}
Теперь, когда кнопки выполняют свою функцию, добавим информации, вот код для пивота:
Проект Silverlight: PanoramaPivotControls Файл: PivotPage1.xaml
<phone:PhoneApplicationPage
x:Class="PanoramaPivotControls.PivotPage1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<!--Pivot Control-->
<controls:Pivot Title="PIVOT CONTROL">
<!--Pivot item one-->
<controls:PivotItem Header="item1">
<Grid>
<!--Added textbox control with formatted text-->
<TextBlock
TextWrapping="Wrap"
Style="{StaticResource PhoneTextLargeStyle}">
<Run>Здесь вы можете добавить любой текст в ваш пивот, в любом количестве.</Run>
<LineBreak/>
<LineBreak/>
<Run>С переносами строк и красивыми рисунками...</Run>
</TextBlock>
</Grid>
</controls:PivotItem>
<!--Pivot item two-->
<controls:PivotItem Header="item2">
<!--Added background image and text content-->
<Border
BorderBrush="{StaticResource PhoneForegroundBrush}"
BorderThickness="{StaticResource PhoneBorderThickness}">
<Grid>
<Image
Source="samplePhoto.jpg"
Stretch="UniformToFill"/>
<TextBlock
Text="Также вы можете размещать текст на выбранном вами фоне."
TextWrapping="Wrap"
Style="{StaticResource PhoneTextExtraLargeStyle}" />
</Grid>
</Border>
</controls:PivotItem>
<!--Pivot item three-->
<controls:PivotItem Header="item3">
<!--This code is a series of string text values-->
<Grid>
<ListBox FontSize="{StaticResource PhoneFontSizeLarge}">
<sys:String>Эта</sys:String>
<sys:String>часть</sys:String>
<sys:String>пивота</sys:String>
<sys:String>содержит</sys:String>
<sys:String>некоторое</sys:String>
<sys:String>количество</sys:String>
<sys:String>строк</sys:String>
<sys:String>которые</sys:String>
<sys:String>вы</sys:String>
<sys:String>можете</sys:String>
<sys:String>прокручивать</sys:String>
<sys:String>вверх</sys:String>
<sys:String>и</sys:String>
<sys:String>вниз</sys:String>
<sys:String>снова</sys:String>
<sys:String>и</sys:String>
<sys:String>снова</sys:String>
<sys:String>!!!!</sys:String>
</ListBox>
</Grid>
</controls:PivotItem>
</controls:Pivot>
</Grid>
</phone:PhoneApplicationPage>
Обратите внимание, что пивот состоит из частей, эти части, по сути своей – отдельные экраны. Внутри каждой из частей располагается любой контент, который вы в нём разместите. Для открытия и закрытия части пивота используются теги:
<controls:PivotItem Header="item1"> … </controls:PivotItem>
Теперь перейдём к панораме и файлу PanoramaPage1.xaml:
Проект Silverlight: PanoramaPivotControls Файл: PanoramaPage1.xaml
<phone:PhoneApplicationPage
x:Class="PanoramaPivotControls.PanoramaPage1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="800"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="False">
<!--LayoutRoot contains the root grid where all other page content is placed-->
<Grid x:Name="LayoutRoot">
<controls:Panorama Title="my pano">
<!--Assigns a background image to the Panorama control-->
<controls:Panorama.Background>
<ImageBrush ImageSource="samplePhoto.jpg"/>
</controls:Panorama.Background>
<!--Panorama item one-->
<controls:PanoramaItem Header="item1">
<Grid>
<!--This code creates two TextBlock controls and places them in a StackPanel control-->
<StackPanel>
<TextBlock
Text="Здесь вы можете добавить любой текст в вашу панораму, в любом количестве."
Style="{StaticResource PhoneTextLargeStyle}"
TextWrapping="Wrap"/>
<TextBlock Text=" "/>
<TextBlock
Text="Здесь может быть любой контент..."
Style="{StaticResource PhoneTextLargeStyle}"
TextWrapping="Wrap"/>
</StackPanel>
</Grid>
</controls:PanoramaItem>
<!--Panorama item two-->
<controls:PanoramaItem Header="item2" Orientation="Horizontal">
<!-- Assigns a border to the PanoramaItem control and background for the content section. -->
<Grid>
<Border
BorderBrush="{StaticResource PhoneForegroundBrush}"
BorderThickness="{StaticResource PhoneBorderThickness}"
Background="#80808080">
<TextBlock
Text="Здесь располагается достаточно широкое содержимое вашей панорамы."
Style="{StaticResource PhoneTextExtraLargeStyle}"
HorizontalAlignment="Center"
VerticalAlignment="Center" >
</TextBlock>
</Border>
</Grid>
</controls:PanoramaItem>
<!--Panorama item three-->
<controls:PanoramaItem Header="item3">
<Grid>
<ListBox FontSize="{StaticResource PhoneFontSizeLarge}">
<sys:String>Эта</sys:String>
<sys:String>часть</sys:String>
<sys:String>панорамы</sys:String>
<sys:String>содержит</sys:String>
<sys:String>некоторое</sys:String>
<sys:String>количество</sys:String>
<sys:String>строк</sys:String>
<sys:String>которые</sys:String>
<sys:String>вы</sys:String>
<sys:String>можете</sys:String>
<sys:String>прокручивать</sys:String>
<sys:String>вверх</sys:String>
<sys:String>и</sys:String>
<sys:String>вниз</sys:String>
<sys:String>снова</sys:String>
<sys:String>и</sys:String>
<sys:String>снова</sys:String>
<sys:String>!!!!</sys:String>
</ListBox>
</Grid>
</controls:PanoramaItem>
</controls:Panorama>
</Grid>
</phone:PhoneApplicationPage>
Как вы заметили, фон нашей панорамы задаётся следующим образом:
<controls:Panorama.Background>
<ImageBrush ImageSource="samplePhoto.jpg"/>
</controls:Panorama.Background>
Теперь запустим наше приложение и тщательно обследуем. Я нахожу эти элементы достаточно красочными, осталось дело за контентом, дерзайте.
(рис 9.5) Результат. Панорама
(рис 9.6) Результат. Пивот
В данной лекции мы:
Создайте панораму, содержащую ссылки на обычные страницы Silverlight приложения.
Цель лекции: научиться создавать пивот и панораму, а также понять их структуру и предназначение.
Приложения на Silverlight, которые должны представлять пользователю большие объемы информации, традиционно используют структуру постраничной навигации. Однако для приложения, выполняющегося на телефоне, разделение на страницы не самое лучшее решение. Портретная ориентация, простота мультисенсорного ввода и приобретающие все большую популярность пользовательские интерфейсы "fluid"( "Fluid" в переводе с английского означает "подвижный", "изменчивый". Интерфейсы такого типа предполагают плавное перетекание одного экрана или страницы в другую .) – все эти факторы предлагают другие типы компоновки. Такие альтернативы представлены в Windows Phone 7 двумя новыми элементами управления:
Панорама(
Обычные приложения имеют определенные рамки размера экрана. Мы можем построить приложение, которое будет выходить за эти рамки! Панорама или пивот предоставляют нам уникальную возможность: построить наше приложение на экране увеличенного размера. Вот, пожалуй и все сходства между ними. Понимание разницы между ними поможет вам строить правильные приложения.
И
Концептуально
(рис 9.1) Панорама
Панорама пробуждает интерес. Она представляет нам контент который привлекает внимание пользователя. Типичный случай использования – когда вам необходимо собрать информацию из различных источников в одном месте. Словно обложка журнала, панорама позволяет пользователю просматривать интересующий его контент и играет роль отправной точки для начала работы с этим контентом. Вам не следует управлять приложением из панорамы, сделайте ее отправной точкой для дальнейшей навигации по приложению. Представьте себе приложение "Поваренная Книга". На панораме можно собрать такие элементы как "Рецепт дня", "Что готовят мои друзья", "Магазины с товарами не далеко от меня" или другой важный контент. Пошаговый рецепт, заметки и связь с друзьями должны быть доступны с панорамы, но эти задачи не следует размещать там. Для этого применяют пивоты.
(рис 9.2) Пивот
Если важна фильтрация, сортировка или организация содержимого в вашем приложении – то используйте пивот. Заголовки страничек в пивоте будут самыми настоящими названиями категорий, а навигация в лево и в право поможет без труда найти необходимую информацию.
В нашей "Поваренной Книге" мы используем Пивот для навигации к таким разделам как Рецепты, Избранное, что готовят друзья.
И
public class TemplatedItemsControl<T> : ItemsControl where T : new(), FrameworkElement
Здесь описывается ItemsControl, который предполагается заполнять объектами типа T. TemplatedItemsControl с заданием в качестве параметра типа PivotItem (Элемент сводного представления) или PanoramaItem (Элементы панорамы), соответственно:
public class Pivot : TemplatedItemsControl<PivotItem> public class Panorama : TemplatedItemsControl<PanoramaItem>
Предполагается, что элемент управления PivotItem, тогда как элемент управления PanoramaItem. И PivotItem, и PanoramaItem наследуются от ContentControl. Если коллекция Items объекта PivotItem или PanoramaItem; у этих элементов управления есть такое важное свойство, как Header (Верхний колонтитул), которое необходимо задать. Если же применяется привязка к свойству ItemsSource, определенному ItemsControl, эти объекты PivotItem и PanoramaItem создаются автоматически, а свойство Header задается через шаблон.
Для создания экземпляров этих элементов управления в XAML-файле необходимо объявить пространство имен XML для библиотеки и пространства имен Microsoft.Phone.Controls:
xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"
Само описание использования панорамы не подразумевает использование пивота внутри панорамы. Но многие разработчики всё же пытаются разместить пивот в панораме или наоборот. Это очень грустно, получается совсем не так классно, как в мозгах у дизайнеров и разработчиков. А пользователи просто хватаются за голову в ужасе.
Давайте разработаем наше первое серьёзное приложения, позволяющее выбирать пользователю между пивотом и панорамой. Также оно будет выводить заданный нами контент.
Для начала создадим новое Silverlight приложение PanoramaPivotControls. И на нашей главной странице добавим две кнопки, предоставляющие нам выбор:
Проект Silverlight: PanoramaPivotControls Файл: MainPage.xaml(фрагмент)
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="PANORAMA AND PIVOT CONTROLS" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="Выбирайте" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Button Content="Попробуйте панораму" Height="168" HorizontalAlignment="Left"
Margin="35,82,0,0" Name="btnPanorama" VerticalAlignment="Top" Width="383"
Click="btnPanorama_Click" />
<Button Content="Познакомьтесь с пивотом" Height="168" HorizontalAlignment="Left"
Margin="35,297,0,0" Name="btnPivot" VerticalAlignment="Top"
Width="383" Click="btnPivot_Click" />
</Grid>
На форме слева отобразились кнопки, созданные нами, теперь создадим две необходимые нам страницы. Нажимаем Project, затем Add New Item и из списка выбираем Windows Phone
В списке файлов проекта у нас появились четыре файла:
XAML – файл PanoramaPage1.xaml и его обработчик PanoramaPage1.xaml.cs, а также
XAML – файл PivotPage1.xaml и его обработчик PivotPage1.xaml.cs. Для нашего проекта нам понадобится ещё один файл – это фон для панорамы. Вы можете использовать любое изображение, подходящего формата. Желательно, чтобы оно было пропорционально вашей панораме. Я применю следующий фон, размером 800 на 600 пикселей:
(рис 9.3) Фон панорамы
Чтобы загрузить его в проект нажмите правой кнопкой мыши на название проекта в меню Solution Explorer, затем Add и Existing Item. Укажите на ваш фон, затем нажмите кнопку Add. Я назвал фон samplePhoto.jpg. В итоге наш проект состоит из следующих файлов:
(рис 9.4) Solution Explorer
Пришло время запрограммировать кнопки, для этого нажимаем на них дважды и добавляем каждой событие перехода на нужную страницу:
Проект Silverlight: PanoramaPivotControls Файл: MainPage.xaml.cs(фрагмент)
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
}
private void btnPanorama_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/PanoramaPage1.xaml", UriKind.Relative));
}
private void btnPivot_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/PivotPage1.xaml", UriKind.Relative));
}
}
Теперь, когда кнопки выполняют свою функцию, добавим информации, вот код для пивота:
Проект Silverlight: PanoramaPivotControls Файл: PivotPage1.xaml
<phone:PhoneApplicationPage
x:Class="PanoramaPivotControls.PivotPage1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<!--Pivot Control-->
<controls:Pivot Title="PIVOT CONTROL">
<!--Pivot item one-->
<controls:PivotItem Header="item1">
<Grid>
<!--Added textbox control with formatted text-->
<TextBlock
TextWrapping="Wrap"
Style="{StaticResource PhoneTextLargeStyle}">
<Run>Здесь вы можете добавить любой текст в ваш пивот, в любом количестве.</Run>
<LineBreak/>
<LineBreak/>
<Run>С переносами строк и красивыми рисунками...</Run>
</TextBlock>
</Grid>
</controls:PivotItem>
<!--Pivot item two-->
<controls:PivotItem Header="item2">
<!--Added background image and text content-->
<Border
BorderBrush="{StaticResource PhoneForegroundBrush}"
BorderThickness="{StaticResource PhoneBorderThickness}">
<Grid>
<Image
Source="samplePhoto.jpg"
Stretch="UniformToFill"/>
<TextBlock
Text="Также вы можете размещать текст на выбранном вами фоне."
TextWrapping="Wrap"
Style="{StaticResource PhoneTextExtraLargeStyle}" />
</Grid>
</Border>
</controls:PivotItem>
<!--Pivot item three-->
<controls:PivotItem Header="item3">
<!--This code is a series of string text values-->
<Grid>
<ListBox FontSize="{StaticResource PhoneFontSizeLarge}">
<sys:String>Эта</sys:String>
<sys:String>часть</sys:String>
<sys:String>пивота</sys:String>
<sys:String>содержит</sys:String>
<sys:String>некоторое</sys:String>
<sys:String>количество</sys:String>
<sys:String>строк</sys:String>
<sys:String>которые</sys:String>
<sys:String>вы</sys:String>
<sys:String>можете</sys:String>
<sys:String>прокручивать</sys:String>
<sys:String>вверх</sys:String>
<sys:String>и</sys:String>
<sys:String>вниз</sys:String>
<sys:String>снова</sys:String>
<sys:String>и</sys:String>
<sys:String>снова</sys:String>
<sys:String>!!!!</sys:String>
</ListBox>
</Grid>
</controls:PivotItem>
</controls:Pivot>
</Grid>
</phone:PhoneApplicationPage>
Обратите внимание, что пивот состоит из частей, эти части, по сути своей – отдельные экраны. Внутри каждой из частей располагается любой контент, который вы в нём разместите. Для открытия и закрытия части пивота используются теги:
<controls:PivotItem Header="item1"> … </controls:PivotItem>
Теперь перейдём к панораме и файлу PanoramaPage1.xaml:
Проект Silverlight: PanoramaPivotControls Файл: PanoramaPage1.xaml
<phone:PhoneApplicationPage
x:Class="PanoramaPivotControls.PanoramaPage1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="800"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="False">
<!--LayoutRoot contains the root grid where all other page content is placed-->
<Grid x:Name="LayoutRoot">
<controls:Panorama Title="my pano">
<!--Assigns a background image to the Panorama control-->
<controls:Panorama.Background>
<ImageBrush ImageSource="samplePhoto.jpg"/>
</controls:Panorama.Background>
<!--Panorama item one-->
<controls:PanoramaItem Header="item1">
<Grid>
<!--This code creates two TextBlock controls and places them in a StackPanel control-->
<StackPanel>
<TextBlock
Text="Здесь вы можете добавить любой текст в вашу панораму, в любом количестве."
Style="{StaticResource PhoneTextLargeStyle}"
TextWrapping="Wrap"/>
<TextBlock Text=" "/>
<TextBlock
Text="Здесь может быть любой контент..."
Style="{StaticResource PhoneTextLargeStyle}"
TextWrapping="Wrap"/>
</StackPanel>
</Grid>
</controls:PanoramaItem>
<!--Panorama item two-->
<controls:PanoramaItem Header="item2" Orientation="Horizontal">
<!-- Assigns a border to the PanoramaItem control and background for the content section. -->
<Grid>
<Border
BorderBrush="{StaticResource PhoneForegroundBrush}"
BorderThickness="{StaticResource PhoneBorderThickness}"
Background="#80808080">
<TextBlock
Text="Здесь располагается достаточно широкое содержимое вашей панорамы."
Style="{StaticResource PhoneTextExtraLargeStyle}"
HorizontalAlignment="Center"
VerticalAlignment="Center" >
</TextBlock>
</Border>
</Grid>
</controls:PanoramaItem>
<!--Panorama item three-->
<controls:PanoramaItem Header="item3">
<Grid>
<ListBox FontSize="{StaticResource PhoneFontSizeLarge}">
<sys:String>Эта</sys:String>
<sys:String>часть</sys:String>
<sys:String>панорамы</sys:String>
<sys:String>содержит</sys:String>
<sys:String>некоторое</sys:String>
<sys:String>количество</sys:String>
<sys:String>строк</sys:String>
<sys:String>которые</sys:String>
<sys:String>вы</sys:String>
<sys:String>можете</sys:String>
<sys:String>прокручивать</sys:String>
<sys:String>вверх</sys:String>
<sys:String>и</sys:String>
<sys:String>вниз</sys:String>
<sys:String>снова</sys:String>
<sys:String>и</sys:String>
<sys:String>снова</sys:String>
<sys:String>!!!!</sys:String>
</ListBox>
</Grid>
</controls:PanoramaItem>
</controls:Panorama>
</Grid>
</phone:PhoneApplicationPage>
Как вы заметили, фон нашей панорамы задаётся следующим образом:
<controls:Panorama.Background>
<ImageBrush ImageSource="samplePhoto.jpg"/>
</controls:Panorama.Background>
Теперь запустим наше приложение и тщательно обследуем. Я нахожу эти элементы достаточно красочными, осталось дело за контентом, дерзайте.
(рис 9.5) Результат. Панорама
(рис 9.6) Результат. Пивот
В данной лекции мы:
Создайте панораму, содержащую ссылки на обычные страницы Silverlight приложения.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.