Жесты являются одним из ключевых способов взаимодействия пользователя и приложения в Windows Phone 7. Это стало возможным благодаря наличию мультитач экранов с 4 касаниями (как минимум) во всех аппаратах на Windows Phone 7. Стандартные элементы управления уже содержат обработчики жестов. Однако, иногда необходимо добавить собственную логику для обработки жестов. В этой заметке будет рассказано о том, как добавить свою логику обработки жестов за несколько шагов.
Список всех доступных жестов подробно описан в соответствующем разделе MSDN, вот только некоторые, наиболее популярные из них:
Для обработки манипуляций каждый элемент управления имеет три события:
Можно построить несложную математическую модель для отслеживания жестов на основе этих событий. Однако, более простой способ обрабатывать жесты – использовать объект GestureService из Windows Phone 7 Toolkit. Этот объект отслеживает стандартные жесты и позволяет подписаться на соответствующие события.
Для использования GestureService следует добавить ссылку на сборку Microsoft.Phone.Controls.Toolkit.dll, в которой и находится нужный объект. После этого следует добавить соответствующее пространство имен в определение страницы:
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
Теперь можно добавить обработку жестов для элементов управления. Например, создадим элемент Rectangle и добавим обработку жеста Hold:
<Rectangle Fill="Green">
<toolkit:GestureService.GestureListener>
<toolkit:GestureListener Hold="OnHoldHandler" />
</toolkit:GestureService.GestureListener>
</Rectangle>
В коде страницы должен быть обработчик с именем OnHoldHandler:
private void GestureListener_Hold(object sender, GestureEventArgs e)
{
// …
}
Теперь при обнаружении жеста Hold будет срабатывать заданный обработчик.