Xamarin Forms - PanGestureRecognizer для элемента в ListView влияет на следующие скрытые элементы по шагам - PullRequest
0 голосов
/ 25 июня 2019

У меня есть ListView и я устанавливаю элементы с помощью listView.ItemsSource = list; На каждый элемент в XML у меня есть GestureRecognizer - PanGestureRecognizer и PanUpdated = "PanUpdateFunction".

Что ж, в этой функции я получаю параметр item by sender и делаю некоторые вычисления для инициализации нужного мне X.

Frame frameThis = (Frame)sender;
var calcXScale = -((frameThis.Width / 7) * 5);
var scalePixels = -20;
switch (e.StatusType)
  {
    case GestureStatus.Running:
      if (e.TotalX < scalePixels)
      {
        await frameThis.TranslateTo(calcXScale, 0, 175, Easing.Linear);
        break;
      }
      if (e.TotalX > -(scalePixels))
      {
        await frameThis.TranslateTo(0, 0, 175, Easing.Linear);
        break;
      }

      break;
  }
}

Когда я сдвигаю элемент влево, и результат больше, чем моя цель, элемент переходит влево и это то, что мне нужно. Но есть что-то вроде ошибки - следующий элемент в ListView, который скрыт от экрана, также перемещается влево и следующий, и следующий, и т. Д.

Я имею в виду: на экране у меня 4 элемента и 10 скрытых. Когда я перемещаю первый и прокручиваю вниз, 5-й и 9-й также сдвигаются влево. Если я сдвигаю 2-е, 6-е и 10-е скользят.

1 Ответ

0 голосов
/ 25 июня 2019

Попробуйте использовать RetainElement в качестве стратегии кэширования для вашего ListView:

<ListView CachingStrategy="RetainElement">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <!-- ... -->
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
...