【发布时间】: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 个被滑动。
【问题讨论】:
-
听起来backing cell被复用了,hidden状态也被复用了。
-
@Demogog 好吧,我会尝试自定义 CellView,也许你是对的。
-
@Demogog,我猜你遇到的问题是因为listview的缓存策略。 docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/…
标签: c# listview xamarin uigesturerecognizer uipangesturerecognizer