André Carlucci

Skeptic .net development

Recebendo eventos do GestureListener em seu ViewModel sem code-behind

Se você já utilizou o GestureListener com MVVM deve ter percebido que não há como mapear seus eventos para o ViewModel utilizando estratégias comuns de MVVM.

Isto acontece porque o GestureListener não é um FrameworkElement e você não pode “atachar” DependecyProperties nele.

Depois de muito pensar uma forma de contornar isso, cheguei a uma solução simples estendendo a classe GestureListener e adicionando novas funcionalidades a ela. O resultado está no Wp7Tools e veja como utilizá-lo abaixo:

Adicione o Wp7Tools em seu projeto:

Em seu xaml, use o GestureListenerEx:

[xml]
<Rectangle Fill=”Red” Width=”100″ Height=”100″>
<toolkit:GestureService.GestureListener>
<wp7:GestureListenerEx
OnTapAction=”Tap”
OnDragStartedAction=”DragStart”
OnDragCompletedAction=”DragEnd”
/>
</toolkit:GestureService.GestureListener>
</Rectangle>
[/xml]

E no seu ViewModel:

E é isso. Sem code-behind, sem comandos, apenas informe o método do ViewModel que deseja executar :)