Урок 9. Элементы управления
Чтобы обратиться ко мне напрямую, посетите мой блог http://michaelcrump.net/ или мой микроблог в Twitter http://twitter.com/mbcrump.
Это девятая статья из серии «10 уроков по Silverlight 5».
Сначала вспомним, что такое Silverlight.
Microsoft Silverlight — это платформа создания полнофункциональных интернет-приложений.
Среда выполнения Silverlight доступна для большинства веб-браузеров в виде подключаемого модуля и работает под управлением различных операционных систем, включая Windows, Mac и Linux.
На предыдущем уроке мы:
- научились устанавливать точку останова внутри выражений привязки Silverlight 5 и узнали, как пользоваться этими возможностями в Silverlight 4, установив набор SDK для Silverlight 5;
- создали пример приложения, содержащего ошибку привязки, и изучили сведения в окне выходных данных с целью дальнейшего анализа, чтобы быстро определить источник ошибки и устранить ее;
- перечислили несколько средств повышения быстродействия и производительности, поддерживаемых Silverlight 5, о которых вы могли не знать.
В этой статье я расскажу о нескольких новых возможностях и элементах управления: о поддержке двойного и тройного щелчка, PivotViewer и выборе элементов списка на основании текста, вводимого в полях со списком.
Поддержка двойного и тройного щелчка
Одна из новых возможностей Silverlight 5 — поддержка двойного и тройного щелчка, позволяющая определить, сколько раз пользователь щелкнул кнопкой мыши. Соответствующее свойство называется ClickCount и находится в классе MouseButtonEventArgs. Давайте посмотрим, как пользоваться этой возможностью.
Создайте проект Silverlight 5 и присвойте ему любое имя.
Откройте файл MainPage.xaml.cs и добавьте в него следующий код. Примечание. Раздел метода MainPage() используется не во всех приложениях.
public MainPage()
{
InitializeComponent();
}
private void textBlock1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
textBlock1.Text = e.ClickCount.ToString();
}
Откройте файл MainPage.xaml и замените содержимое раздела Grid следующим кодом.
<Grid x:Name="LayoutRoot" Background="White">
<Border BorderBrush="Black" BorderThickness="1" Margin="52,49,68,74" CornerRadius="10">
<TextBlock Height="152" HorizontalAlignment="Center" x:Name="textBlock1" Text="0" VerticalAlignment="Center" Width="244" MouseLeftButtonDown="textBlock1_MouseLeftButtonDown" Foreground="#FFFF2E2E" FontSize="96" TextAlignment="Center" />
</Border>
</Grid>
Если теперь запустить приложение, появится следующее окно.
Щелкните несколько раз внутри границы, и вы увидите, что число на экране будет увеличиваться. Если подождать несколько секунд и щелкнуть еще раз, число сбросится. Если хотите, добавьте в приложение операторы If..Then…, чтобы определить, при каком значении этого числа оно сбрасывается. Аж 35 щелчков. Шутка. :)
PivotViewer
Группа разработки Silverlight дает следующее определение: Silverlight PivotViewer предоставляет мощные, полезные и информативные средства, упрощающие обработку больших объемов данных в Интернете. Мне нечего к этому добавить. На этом уроке мы сначала создадим приложение SL5, использующее элемент управления PivotViewer и отображающее коллекцию фильмов (классический пример, правда?).
Обратите внимание, что в этом примере используется лишь малая часть возможностей PivotViewer. Для информации я добавил в конец статьи официальную ссылку корпорации Майкрософт.
Создайте проект Silverlight 5 и назовите его PivotViewer.
Откройте файл MainPage.xaml.cs и добавьте в него следующий код.
using System;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Collections.ObjectModel;
namespace PivotViewer
{
public partial class MainPage : UserControl
{
private ObservableCollection<Movie> Movies;
public MainPage()
{
InitializeComponent();
Movies = new ObservableCollection<Movie>();
for (Int64 i = 0; i < 500; i++)
{
Movies.Add(new Movie() { Title = "Ice Age" + i.ToString(), CountryOfOrigin = "USA", Description = "Set during the Ice Age.", Director = "Chris Wedge" + i.ToString(), Duration = 90, ReleaseDate = new DateTime(2002, 09, 03) });
}
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
MoviePivot.ItemsSource = Movies;
}
}
}
Создайте класс с именем Movie, который должен выглядеть примерно так.
using System;
namespace PivotViewer
{
public class Movie
{
public string Title { get; set; }
public int Duration { get; set; }
public DateTime ReleaseDate{ get; set; }
public string CountryOfOrigin { get; set; }
public string Description { get; set; }
public string Director { get; set; }
}
}
Откройте файл MainPage.xaml и замените его содержимое следующим кодом.
<UserControl x:Class="PivotViewer.MainPage"
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="https://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="https://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:pivot="clr-namespace:System.Windows.Controls.Pivot;assembly=System.Windows.Controls.Pivot"
Loaded="UserControl_Loaded"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<pivot:PivotViewer x:Name="MoviePivot"
AccentColor="LightGreen"
Background="LightGray"
ControlBackground="LightYellow"
SecondaryBackground="AntiqueWhite"
SecondaryForeground="Bisque"
SecondaryItemValueBackgroundColor="Chocolate" >
<!--Setting PivotProperties-->
<pivot:PivotViewer.PivotProperties>
<pivot:PivotViewerStringProperty Id="FTitle" Options="CanFilter" DisplayName="Title" Binding="{Binding Title}" />
<pivot:PivotViewerStringProperty Id="FDuration" Options="CanFilter" DisplayName="Duration" Binding="{Binding Duration}" />
<pivot:PivotViewerStringProperty Id="FDirector" Options="CanFilter" DisplayName="Director" Binding="{Binding Director}" />
</pivot:PivotViewer.PivotProperties>
<!--Setting data-->
<pivot:PivotViewer.ItemTemplates>
<pivot:PivotViewerItemTemplate>
<Border Width="200" Height="200" Background="CadetBlue">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Title}" FontSize="16" Foreground="White" />
<TextBlock Text="(" FontSize="16" Foreground="White" />
<TextBlock Text="{Binding Duration}" FontSize="16" Foreground="White" />
<TextBlock Text=")" FontSize="16" Foreground="White" />
</StackPanel>
<TextBlock Text="{Binding Director}" FontSize="16" Foreground="White" />
<TextBlock Text="{Binding CountryOfOrigin}" FontSize="16" Foreground="White" />
</StackPanel>
</Border>
</pivot:PivotViewerItemTemplate>
</pivot:PivotViewer.ItemTemplates>
</pivot:PivotViewer>
</Grid>
</UserControl>
Если теперь запустить приложение и выбрать несколько элементов, появится следующее окно. Как видим, загруженное приложение содержит больше 500 элементов. Вот так вот!
Я рассмотрел лишь малую часть возможностей PivotViewer. Дополнительные сведения см. на сайте Silverlight.
Выбор элементов списка на основании текста, вводимого в полях со списком
Еще одна новая возможность Silverlight 5, значительно упрощающая поиск нужных элементов в больших списках, — это функция выбора элементов списка на основании текста, вводимого в полях со списком. Давайте создадим простое приложение.
Создайте проект Silverlight 5 и присвойте ему любое имя.
Откройте файл MainPage.xaml.cs и добавьте в него следующий код.
public MainPage()
{
InitializeComponent();
var lstDevelopers = new List<string>
{ "Michael Crump",
"Pete Brown",
"Victor G.",
"Scott Hanselman",
"Jesse Liberty",
"Shawn Wildermuth",
"Scott Gu",
"Joel Cochran",
"Kunal Chowdhurry" };
cbDevelopers.ItemsSource = lstDevelopers;
}
Откройте файл MainPage.xaml и замените содержимое раздела Grid следующим кодом.
<Grid x:Name="LayoutRoot" Background="White">
<ComboBox x:Name="cbDevelopers" Height="40" Width="150" Margin="20" />
</Grid>
Если запустить получившееся приложение и начать вводить текст, элемент управления ComboBox автоматически выделит строки, соответствующие вводимому тексту.
Заключение
На этом уроке мы научились использовать поддержку двойного и тройного щелчка и PivotViewer и выбирать элементы списка на основании текста, вводимого в полях со списком. На следующем (заключительном) уроке я расскажу о нескольких новых возможностях Silverlight 5: о поддержке HTML в браузере, использовании PostScript и задачах для библиотеки TPL. Еще раз спасибо за внимание. Встретимся на следующем уроке.
Чтобы обратиться ко мне напрямую, посетите мой блог http://michaelcrump.net/ или мой микроблог в Twitter http://twitter.com/mbcrump.
Перевод статей от Michael Crump.