【问题标题】:Xamarin Forms - PanGestureRecognizer on item in ListView influence on the next hidden items by stepsXamarin Forms - ListView 中项目上的 PanGestureRecognizer 逐步影响下一个隐藏项目
【发布时间】:2019-06-25 09:34:49
【问题描述】:

我有一个 ListView 并通过 listView.ItemsSource = list; 设置项目 在 xml 中的每个项目上,我都有一个 GestureRecognizer - PanGestureRecognizer 和 PanUpdated="PanUpdateFunction"。

好吧,在这个函数上,我通过 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 个被滑动。

【问题讨论】:

标签: c# listview xamarin uigesturerecognizer uipangesturerecognizer


【解决方案1】:

尝试使用 RetainElement 作为 ListView 的缓存策略:

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

【讨论】:

  • 它不工作。在我的情况下,我使用 CachingStrategy="RecycleElement" 但对 CachingStrategy="RetainElement" 的更改并未修复该错误。 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 2021-10-27
  • 2021-09-04
  • 1970-01-01
  • 1970-01-01
  • 2016-12-29
相关资源
最近更新 更多