仿新浪微博实现ListBox下拉刷新和到底部自动加载
2012-09-04 13:59
501 查看
一、下拉刷新
下拉刷新实现思路:
1、定义一个PullDownToRefreshPanel容器控件。为它添加3种状态模板,分别是PullingDownTemplate,ReadyToReleaseTemplate
和RefreshingTemplate,顾名思义分别是显示下拉状态模板,显示松开刷新状态模板和正在刷新中的状态模板。
2、定义自己的ListBox让它继承系统的ListBox,并重写它的Style,把ScrollViewer的ManipulationMode属性设为Conrtrol(必需),
只有这样才能和我们的定义的PullDownToRefreshPanel兼容。ManipulationMode属性系统默认是System;区别就是,System的
滑动效果更好。这里的ListBox的Style定义可以参考安装的SDK目录里面的系统定义,路径大致是:c->Program Files(x86)->
Microsoft SDKs->Windows Phone->v7.1->Design->System.Windows.xaml.
View Code
接下来根据状态的改变做相应的加载功能,代码如下
最后,在页面的loaded里把这些代码串联起来就OK了。如下:
本文参考:http://www.hugwp.com/thread-2058-1.html
和Jason Ginchereau的博客
源码:http://files.cnblogs.com/qq278360339/PullDwonReflesh(%E4%B8%8B%E6%8B%89%E5%88%B7%E6%96%B0%EF%BC%8C%E5%88%B0%E5%BA%95%E8%87%AA%E5%8A%A8%E5%8A%A0%E8%BD%BD).zip
本文版权归作者和卤面网所有,
转载请标明原始出处
下拉刷新实现思路:
1、定义一个PullDownToRefreshPanel容器控件。为它添加3种状态模板,分别是PullingDownTemplate,ReadyToReleaseTemplate
和RefreshingTemplate,顾名思义分别是显示下拉状态模板,显示松开刷新状态模板和正在刷新中的状态模板。
2、定义自己的ListBox让它继承系统的ListBox,并重写它的Style,把ScrollViewer的ManipulationMode属性设为Conrtrol(必需),
只有这样才能和我们的定义的PullDownToRefreshPanel兼容。ManipulationMode属性系统默认是System;区别就是,System的
滑动效果更好。这里的ListBox的Style定义可以参考安装的SDK目录里面的系统定义,路径大致是:c->Program Files(x86)->
Microsoft SDKs->Windows Phone->v7.1->Design->System.Windows.xaml.
View Code
private VisualStateGroup FindVisualState(FrameworkElement element, string name) { if (element == null) return null; IList groups = VisualStateManager.GetVisualStateGroups(element); foreach (VisualStateGroup group in groups) { if (group.Name == name) return group; } return null; }
接下来根据状态的改变做相应的加载功能,代码如下
void visualStateGroup_CurrentStateChanged(object sender, VisualStateChangedEventArgs e) { var visualState = e.NewState.Name; if (visualState == "NotScrolling") { var v1 = _ScrollViewer.ExtentHeight - _ScrollViewer.VerticalOffset; var v2 = _ScrollViewer.ViewportHeight * 1.5; if (v1 <= v2 && !custListBox.IsRefreshing) { AddString(index, 20); visualState += "_End"; } } }
最后,在页面的loaded里把这些代码串联起来就OK了。如下:
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) { if (_IsHookedScrollEvent) return; _ScrollViewer = App._ScrollViewer; if (_ScrollViewer != null) { _IsHookedScrollEvent = true; FrameworkElement element = VisualTreeHelper.GetChild(_ScrollViewer, 0) as FrameworkElement; if (element != null) { VisualStateGroup visualStateGroup = FindVisualState(element, "ScrollStates"); visualStateGroup.CurrentStateChanged += new EventHandler<VisualStateChangedEventArgs>(visualStateGroup_CurrentStateChanged); } } }
本文参考:http://www.hugwp.com/thread-2058-1.html
和Jason Ginchereau的博客
源码:http://files.cnblogs.com/qq278360339/PullDwonReflesh(%E4%B8%8B%E6%8B%89%E5%88%B7%E6%96%B0%EF%BC%8C%E5%88%B0%E5%BA%95%E8%87%AA%E5%8A%A8%E5%8A%A0%E8%BD%BD).zip
本文版权归作者和卤面网所有,
转载请标明原始出处
相关文章推荐
- Android 下拉刷新框架实现、仿新浪微博、QQ好友动态滑到底部自动加载
- 《ListBox》———何如实现ListBox下拉刷新和到底部自动加载
- Android LRecyclerView实现下拉刷新,滑动到底部自动加载更多
- jQuery插件实现网页底部自动加载-类似新浪微博
- jQuery实现自动底部加载 类似于新浪微博
- jQuery实现新浪微博自动底部加载的方法
- Android LRecyclerView实现下拉刷新,滑动到底部自动加载更多
- Android LRecyclerView实现下拉刷新,滑动到底部自动加载更多
- Android LRecyclerView实现下拉刷新,滑动到底部自动加载更多
- Android LRecyclerView实现下拉刷新,滑动到底部自动加载更多
- Android LRecyclerView实现下拉刷新,滑动到底部自动加载更多
- vueJs实现DOM加载完之后自动下拉到底部的实例代码
- 对于JQ实现网页翻页到底部自动加载的问题
- javscript实现滚动条滚动到页面底部自动加载增加页面内容
- php+jquery+ajax滚动条滚动到底部自动加载,简单实现瀑布流
- RecyclerView实现下拉刷新与自动加载控件封装
- Flask: Ajax 设置Access-Control-Allow-Origin实现跨域访问;Ajax页面底部自动加载
- Android自定义控件实战仿新浪微博QQ好友动态滑到底部自动加载
- 使用jquery实现页面滚动到底部自动加载新的信息
- vueJs实现DOM加载完成之后自动下拉到底部