wp8.1(wprt)ScrollViewer到顶部继续往下拉,如何监测手指松开??

ze****sl UID.1015033
2015-03-22 发表

如题,ScrollViewer到达顶部继续往下拉,并不会触发ViewChanged事件,这个时候如何监测手指松开?

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
3517277 UID.13183
2015-03-22 回复

有相应的事件,但忘记全名了

ze****sl UID.1015033
2015-03-22 回复

Quote***链接停止解析***
有相应的事件,但忘记全名了


什么事件?PointerReleased、ManipulationCompleted都不行啊

vbfool UID.352791
2015-03-22 回复

去codeplex上找一下WP7版的Toolkit的源码吧,我记得这个东西是写在LonglistSelector控件的源码里的

ze****sl UID.1015033
2015-03-23 回复

Quote***链接停止解析***
去codeplex上找一下WP7版的Toolkit的源码吧,我记得这个东西是写在LonglistSelector控件的源码里的 ...


我问的是windows runtime for wp8.1,winrt里scrollerviewer只有viewchanged和viewchanging事件。。。。但都是滚动条位置改变才触发的,顶部往下拉并没改变滚动条位置,这2个事件是不触发的

wcavell UID.34926
2015-03-25 回复

本帖最后由 wcavell 于 2015-3-25 17:39 编辑

以下描述可能有误。
基本无解,ListView这类控件都是有一个ScrollViewer控件,这个控件的手势并不是用了Manipulation这些处理的,而是更底层的,经过处理后,不在通知Manipulation、Pointer这类事件。如果设置ManipulationMode=ManipulationModes.All,确实能扑住到Manipulation事件,滑动缺失效了
参考:***链接停止解析***

my****ap UID.239940
2015-03-28 回复

本帖最后由 mywpxap 于 2015-3-28 15:16 编辑

同意楼上的,wp8.1 rt 环境下,ListView下拉刷新靠它监控自身的事件或子控件的事件基本无解,ListBox尚未尝试,可以参考网上的一些代码尝试ListBox能否满足你的需求
ListView本人研究了几天,最终还只能通过其他方式变通的实现了这一功能

Leeway213 UID.76829
2015-03-28 回复

下拉刷新么。。。 对于RT的listview 我也是研究了好久。。。无解 于是在commandbar里加了个刷新。。。

qiqiminmin UID.638527
2015-03-29 回复

好吧,首先我承认这不是普通的做法,因为我也和楼主一样有同样的需求。

我这种方法只适合自己,因为喜欢自动弄。 当然还有很多地方需要自己弄,是个比较麻烦的过程,但是非常有趣。(特别是在顶部的时候,往下拉,你就需要RenderTransform让scrollviewer往下移动了。)

我在scrollviewer那个上面加了个 透明的Grid, 透明度几乎为零,但不是零,你设为1%。而且所有的Tap, PointPressed Event,Mainipulation都是自己处理。

<ScrollViewer x:Name="scrollViewer" ManipulationMode="TranslateY" ManipulationStarted="ScrollViewer_ManipulationStarted">
<StackPanel>
<Grid Height="1000" Background="Yellow" Margin="10"></Grid>
<Grid Height="1000" Background="Yellow" Margin="10"></Grid>
</StackPanel>
</ScrollViewer>
<Grid Visibility="Visible" Background="#02FFFFFF" ManipulationMode="TranslateY" ManipulationDelta="Grid_ManipulationDelta_1" ManipulationCompleted="Grid_ManipulationCompleted_1">

</Grid>

大概就是这个样子。 首先这个Grid的 ManipulationMode要设置为TranslateY或者你想要的。

private void Grid_ManipulationDelta_1(object sender, ManipulationDeltaRoutedEventArgs e)
{
//当在顶部时往下拉
if (scrollViewer.VerticalOffset == 0 && e.Delta.Translation.Y > 0)
{
//记录,并在 ManipulationCompleted,更新数据
}
//当在底部时往上拉
else if (scrollViewer.VerticalOffset == scrollViewer.ScrollableHeight && e.Delta.Translation.Y < 0)
{
//记录,并在 ManipulationCompleted,更新数据
}
//正常情况下
else
{
scrollViewer.ChangeView(null, scrollViewer.VerticalOffset - e.Delta.Translation.Y, null);
}
}



wcavell UID.34926
2015-03-29 回复

Quoteqiqiminmin 发表于 2015-3-29 07:41
好吧,首先我承认这不是普通的做法,因为我也和楼主一样有同样的需求。

我这种方法只适合自己,因为喜欢自 ...


这样不就 惯性滑动,阻尼效果这些不就没有了吗?感觉也不是很流畅吧

qiqiminmin UID.638527
2015-03-29 回复

Quote***链接停止解析***
这样不就 惯性滑动,阻尼效果这些不就没有了吗?感觉也不是很流畅吧


阻尼效果也是可以弄的,是在manipulation结束时用storyboard, 其实自己写更加容易象ios,你可以对齐某一个。

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报