Жест анимации в Windows Phone 8.1 WinRT
Я создаю приложение, которое позволит пользователю провести пальцем по ListViewItem для выполнения действия.
Я могу посмотреть все статьи о жестах API онлайн, так что все в порядке - но как бы я анимировал мой ListViewItem. Таким образом, проведя пальцем слева направо, вы переместите элемент вправо, а проведением справа налево переместите элемент влево.
Есть ли способ привязать жест к визуальной анимации?
1 ответ
Необходимо установить для свойства ManipulationMode значение "System,TranslateX", чтобы ваш ListViewItem можно было перемещать только горизонтально. После этого прослушайте следующие события: ManipulationStarted, ManipulationDelta и ManipulationCompleted. Я рекомендую использовать эту структуру:
<ListView.ItemTemplate>
<DataTemplate>
<Canvas>
<Grid></Grid> //the grid will have your content and can be moved
</Canvas>
</DataTemplate>
<ListView.ItemTemplate>
В ManipulationStarted вы получаете расстояние, которое пользователь проводил пальцем, и перемещаете сетку в Canvas. Что-то вроде этого:
private void GridManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
var grid = sender as Grid;
if ( grid != null )
{
var distance = Canvas.GetLeft(grid) + e.Delta.Translation.X;
//here you should test if the user has swiped too far(outside the screen), and prevent that
Canvas.SetLeft(grid, distance); //set the grid to the new position inside the canvas
}
}
Надеюсь, это поможет. Если у вас есть еще вопросы, пожалуйста, дайте мне знать.