Блог Сергея Байдачного

Мой блог о технологиях

Введение в Silverlight 5 (часть 1)

with one comment

Закончилась очередная конференция MIX (http://live.visitmix.com), на которой, традиционно, была представлена новая версия технологии Silverlight – 5-я версия. Несмотря на то, что в Silverlight 5 beta доступны еще не все ожидаемые возможности, я, также традиционно, начну обзор существующих.

Начну с того, что Silverlight 5 beta можно скачать по ссылке http://www.silverlight.net/getstarted/silverlight-5-beta/. Тут доступны: видео презентации с обзором новых возможностей, статьи и инсталляция Silverlight 5 beta утилиты для Visual Studio 2010 SP1.

Обработка множественного нажатия кнопки мыши

Первая возможность, с которой мы начнем обзор, это поддержка обработки множественного нажатия кнопки мыши. Обычно требуется реализовать обработчик события при двойном щелчке, но Silverlight позволяет обрабатывать и большее количество нажатий. Речь идет как о левой, так и о правой кнопках мыши. Тут разработчики немного схитрили. Чтобы не менять модель событий и не вводить новые события на двойной щелчок мыши, к параметру EventArgs уже существующих событий, возникающих при однократном нажатии кнопки мыши, было добавлено свойство ClickCount. Это свойство и содержит количество нажатий.

Интересно то, что события MouseLeftButtonDown и MouseRightButtonDown срабатывают для каждого щелчка, даже если вы хотите обрабатывать только двойной щелчок. При этом, если между щелчками проходит больше секунды, или другое событие (например, пользователь еще и потянул мышь), то счетчик обнуляется. Поэтому, если Вы хотите для одного и того же объекта обрабатывать одинарный и двойной (а может и тройной) щелчок, то необходимо, чтобы они не были взаимоисключающими. Иными словами, при одинарном щелчке Вы можете выбрать папку, а при двойном – открыть папку. Наоборот работать не будет, так как уже при первом щелчке папка будет открыта.

Ниже показан простой код, который позволяет отобразить количество щелчков:

   1:  <Grid x:Name="LayoutRoot" Background="White" 
   2:     MouseLeftButtonDown="LayoutRoot_MouseLeftButtonDown">
   3:     <sdk:Label Height="28" HorizontalAlignment="Left" 
   4:        Name="label1" VerticalAlignment="Top" Width="120" />
   5:  </Grid>

 

Поддержка выбора элементов в ItemsControl с клавиатуры

Данный функционал достаточно простой, но приятный. Вспомните бесконечные элементы ComboBox со списком стран, или элементы, позволяющие установить фильтр по чьей-то фамилии, выбрав ее из сотни других и т. д. Для всех этих случаев, имея элемент-наследник от ItemsControl, такой как ListBox, ComboBox и другие, Вы всегда должны были пользоваться скроллингом, чтобы найти нужный элемент. Естественно, я имею в виду Silverlight. В WPF или даже в простом HTML, подобные элементы давно поддерживают возможность выбора с клавиатуры. Так, переходя на тот же выпадающий список стран, мне достаточно легко набрать на клавиатуре букву «У», чтобы увидеть активным элементом слово «Украина». Это позволяет быстро заполнять сложные формы с большим количеством опций. Теперь такая возможность появилась и в Silverlight. Рассмотрим простой пример:

   1:      <Grid x:Name="LayoutRoot" Background="White">
   2:          <ComboBox Height="23" HorizontalAlignment="Left" 
   3:              Name="comboBox1" VerticalAlignment="Top" Width="120">
   4:              <ComboBoxItem Content="Последний" />
   5:              <ComboBoxItem Content="Третий" />
   6:              <ComboBoxItem Content="Второй" />
   7:              <ComboBoxItem Content="Первый" />
   8:          </ComboBox>
   9:      </Grid>

 

На экране отобразится обычный ComboBox, который позволяет выбрать один из четырех элементов. Переключитесь на русскую клавиатуру и попробуйте понажимать символ «П». ComboBox будет последовательно выбирать один из двух элементов (Первый и Последний). Если Вы последовательно наберете два символа, например «Пе», то будет выбран «Первый» без альтернатив.

Понятно, что ComboBox в Silverlight, как и другие ItemsControl, позволяет отображать что угодно и не обязательно текст, особенно если речь идет о связывании со сложными объектами. Именно поэтому, для всех элементов ItemsControl ввели дополнительное свойство TextPath, которое задает имя свойства объекта, с которым мы реализуем связывание, используемое при выборе элемента с клавиатуры.

   1:  <ComboBox Height="23" TextSearch.TextPath="ImageTitle" 
   2:     HorizontalAlignment="Left" Name="comboBox1" 
   3:     VerticalAlignment="Top" Width="120">
Реклама

Written by Sergiy Baydachnyy

14.04.2011 в 18:15

Опубликовано в SilverLight

Tagged with

Один ответ

Subscribe to comments with RSS.

  1. спасибо за пост!
    пишите еще про SL5. Будем читать с удовольствием 😉

    DamiR

    10.05.2011 at 20:32


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: