Владея серебренным прикосновением… Как в библиотеке Wintellect Silverlight Touch, LightTouch

Грег Дункан

Просматривая предыдущие сообщения, складывается впечатление, что я не нашел ни одного, посвященного «касаниям». Сегодня это кончится… Да, да, оно касается и Silverlight тоже, но что касается него, касается и меня.

Если вам нужно кого-то осудить за сегодняшний пост (кроме меня, конечно, clip_image002), то к вашим услугам сообщение Майка Таулти (Mike Taulty) «LightTouch–Silverlight Touch Library from Wintellect», которое возбудило мой интерес.

Размещенная на Codeplex библиотека Wintellect Silverlight Touch Library (или LightTouch) обеспечивает поддержку множественных касаний для приложений Silverlight.

Wintellect Silverlight Touch Library – повторно используемая библиотека, обеспечивающая поддержку множественных касаний для приложений Silverlight с помощью манипуляций, жестов, а также специальных поведений и элементов управления.

Эта библиотека была разработана, чтобы пополнить ограниченную поддержку «из коробки», доступную для организации взаимодействий с помощью касаний в текущем выпуске Silverlight. Улучшения включают в себя:

  • Присоединение событий, связанных с касаниями для управления разметкой XAML через подключаемые поведения.
  • Высокоуровневая поддержка жестов с помощью подключаемых поведений. Это сделано по аналогии с реализацией жестов, включенной в набор Silverlight for Windows Phone Toolkit.
  • Подсоединяемые поведения позволяют элементам управления, содержащим ScrollViewer (таким как ListBox) реагировать на прокрутку с помощью касаний. Они включают использование эффекта инерции при прокрутке.
  • Специальная реализация ComboBox, которая включает сглаженнную прокрутку, но не закрывает выскакивающее окно при завершении операции касания.

Включенные примеры дают возможность поупражняться с этой библиотекой;

clip_image004

Код, стоящий за ними, очень прост:

 private void TouchShapeBehavior_ManipulationStarted(Object sender, Manipulation2DStartedEventArgs e)
       {
           var senderShape = (Shape)sender;
           senderShape.Tag = senderShape.Fill;
           senderShape.Fill = new SolidColorBrush(Colors.Yellow);
       }


       private void TouchShapeBehavior_ManipulationDelta(Object sender, Manipulation2DDeltaEventArgs e)
       {
           var senderShape = (Shape)sender;
           var translateTransform = (TranslateTransform)senderShape.RenderTransform;
           translateTransform.X += e.Delta.TranslationX;
           translateTransform.Y += e.Delta.TranslationY;
       }


       private void TouchShapeBehavior_ManipulationCompleted(Object sender, Manipulation2DCompletedEventArgs e)
       {
           var senderShape = (Shape)sender;
           //TODO: This should really be done at the end of inertia, otherwise it will take the original color and keep moving...
  senderShape.Fill = senderShape.Tag as Brush;
       }

И XAML;

clip_image006

И, как вы и ожидаете, исходный код всей библиотеки доступен на условиях лицензии MS-PL license.

clip_image008

Итак, почему же почему я пишу об этом в блоге? Где тут «наслаждение»?

Время, которое обычно тратится на кодирование инфраструктуры и платформы, теперь идет на кодирование приложений. Я получаю гораздо больше удовольствия, тратя время на реальные приложения, чем когда я создаю основу платформы (обычно). И прикольно видеть внутренности чего-то, как это (да, я думаю, что это, по крайней мере, весело… clip_image009)

Если вы собираетесь включить в приложение Silverlight поддержку множественных касаний, то эта библиотека может быть тем, что стоит проверить.