Windows phone 8 如何在WindowsPhone8中使用LongListSelector实现拉式刷新?
我正在使用Microsoft.Phone.Controls程序集中提供的现成LongListSelector编写一个新的WP8应用程序。有谁能提供一个实现pull-to-refresh的代码示例吗?pull-to-refresh最初由Tweetie在iPhone上流行,现在在iOS和Android上很常见?现有的示例使用非标准控件,我希望在WP8中保持对LongListSelector的使用 编辑 我在StackOverflow上找到了一个很好的答案,描述了Twitter示例以及如何更详细地实现这一点: 你没有 拉入刷新不是标准的Windows Phone交互,因此您不应该实现它 没有本地/第一方Windows Phone应用程序使用此功能,几乎没有第三方应用程序使用此功能。这是有原因的 要刷新页面内容(或者在您的情况下,使用Windows phone 8 如何在WindowsPhone8中使用LongListSelector实现拉式刷新?,windows-phone-8,longlistselector,Windows Phone 8,Longlistselector,我正在使用Microsoft.Phone.Controls程序集中提供的现成LongListSelector编写一个新的WP8应用程序。有谁能提供一个实现pull-to-refresh的代码示例吗?pull-to-refresh最初由Tweetie在iPhone上流行,现在在iOS和Android上很常见?现有的示例使用非标准控件,我希望在WP8中保持对LongListSelector的使用 编辑 我在StackOverflow上找到了一个很好的答案,描述了Twitter示例以及如何更详细地实现
长列表选择器
),您应该使用刷新应用程序图标按钮
,就像在邮件应用程序中一样。这是管理刷新的标准和首选方法
Windows Phone不是Android,也不是iOS。在为其设计应用程序时,请记住这一点
这不是动物园,有规则。如果你真的必须这样做(见米格尔·罗什福的答案),那么详情可以在
基本上,
ScrollViewer
具有隐藏/未记录状态,允许检测列表顶部或底部的“压缩”,您可以使用它触发加载 事实上,我刚刚在2012年11月30日发现了一个上传到Windows Phone开发中心的项目,该项目使用Twitter搜索和Windows Phone 8 LongListSelector实现了“无限滚动”
在以下位置下载此项目:由于WP8 LLS不使用scrollviewer,我想您必须检查UI树以获得视口控件,并查看如何使用ViewportControl。viewport属性 哦。。。twitter应用程序现在正在使用pull刷新交互。我喜欢WP平台的UI指南,但规则一旦掌握,就会被打破;)
这篇文章可以提示您如何获取视口控件和检索滚动偏移。当列表反弹时,此滚动偏移量必须为特定值您可以在中检出样本 它有一个很好的实现,称为longllistselector控件的ListView扩展,这将真正帮助您
请记住,使用longlistselector时,始终尝试至少加载20项。=) 这并不是很简单,但一种方法是使用GestureService
this.gestureListener = GestureService.GetGestureListener(containerPage);
this.gestureListener.DragStarted += gestureListener_DragStarted;
this.gestureListener.DragCompleted += gestureListener_DragCompleted;
this.gestureListener.DragDelta += gestureListener_DragDelta;
但是,它有一些bug。例如,DragCompleted并不总是引发的,所以您需要使用OperationCompleted事件对其进行双重检查,这似乎更可靠
containerPage.ManipulationStarted += delegate { this.manipulationInProgress = true; };
containerPage.ManipulationCompleted += delegate
{
this.manipulationInProgress = false;
PerformDragComplete();
};
另一个问题是DragDelta偶尔会报告错误的坐标。因此,您需要这样的修复:
Point refPosition = e.GetPosition(null);
if (refPosition.X == 0 && refPosition.Y == 0)
{
Tracer.WriteLine("Skipping buggy event");
return;
}
最后,您可以找到列表是否一直位于顶部:
public double VerticalOffset
{
get
{
ViewportControl viewportControl = this.FindChildByName("ViewportControl") as ViewportControl;
if (viewportControl != null)
{
Tracer.WriteLine("ViewPort.Bounds.Top=" + viewportControl.Bounds.Top + " ViewPort.Top=" + viewportControl.Viewport.Top.ToString() + " State=" + this.ManipulationState);
return viewportControl.Bounds.Top - viewportControl.Viewport.Top;
}
return double.NaN;
}
}
好的,谢谢你的信息。FWIW,这种行为最初不是iOS或Android所固有的,它是一种被发现并成为标准的有用手势。由于WP8实现了动态滚动,因此它们似乎可以进行模拟。如果我的用户抱怨,只是为了确认,我应该告诉他们这是a)不标准还是b)既不标准也不可能?告诉twitter和facebook windows phone应用程序开发者你知道facebook windows phone应用程序开发者是谁吗:Microsoft。这不是动物园,但ScrollViewer具有下拉效果。。。太奇怪了。。。此外,很有趣的是,看到微软的Facebook应用程序使用下拉刷新…我确实注意到了这段代码,但不幸的是,它的底部写着“对不起,它不能与LongListSelector一起工作——该控件可以自定义滚动,而不使用滚动查看器。”因此,我认为我不能使用它。可能是