Жест анимации в 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
            }
        }

Надеюсь, это поможет. Если у вас есть еще вопросы, пожалуйста, дайте мне знать.

Другие вопросы по тегам