Как использовать GestureService и добавить обработчики жестов из кода
В Windows Phone 7 Toolkit доступен объект для обработки жестов – GestureService
. Как известно, этот сервис позволяет обрабатывать стандартные для Windows Phone 7 жесты. Однако, многие примеры использования GestureService
сводятся к применению его в XAML. В этой небольшой заметке я покажу как использовать GestureService
из кода.
Для начала работы нам необходимо подключить Windows Phone 7 Toolkit к проекту. Для этого нужно добавить ссылку на сборку Microsoft.Phone.Controls.Toolkit.dll
.
Как использовать GestureService
из кода
Для использования GestureService
из кода, нам нужно получить доступ к объекту GestureListener
, который будет ассоциирован с некоторой областью на экране. В рамках этой области (source
) будут отслеживаться наши жесты.
var listener = GestureService.GetGestureListener(source);
Объект GestureListener
готов к работе, теперь можно обрабатывать его жесты.
Как добавить обработчик жестов
Для обработки конкретного жеста следует подписаться на соответствующее событие объекта GestureListener
:
listener.Tap += OnTapHandler;
Безусловно можно подписаться и на другие жесты, используя аналогичный подход.
Где разместить код обработки жестов
Подписываться на события жестов можно в любой момент после создания соответствующих элементов управления. Например, это можно делать в конструкторе страницы (конечно, более правильно это делать во ViewModel
, но сейчас мы не будем усложнять пример). Например, следующий код создает новый элемент управления (Rectangle
) на странице и добавляет для него обработчик жестов.
public partial class Page1 : PhoneApplicationPage
{
Rectangle _source;
public MainPage()
{
InitializeComponent();
_source = new Rectangle {Height = 200, Width = 200, Fill = new SolidColorBrush(Colors.Green)};
ContentPanel.Children.Add(_source);
var listener = GestureService.GetGestureListener(_source);
listener.Tap += OnTapHandler;
}
private void OnTapHandler(object sender, GestureEventArgs e)
{
_source.Fill = new SolidColorBrush(Colors.Yellow);
}
}
Добавить комментарий