《ListBox》———何如实现ListBox下拉刷新和到底部自动加载
2012-06-01 12:38
447 查看
一、下拉刷新
下拉刷新实现思路:
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的博客
源码:猛击下载
本文版权归作者和卤面网所有,
转载请标明原始出处
下拉刷新实现思路:
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的博客
源码:猛击下载
本文版权归作者和卤面网所有,
转载请标明原始出处
相关文章推荐
- 仿新浪微博实现ListBox下拉刷新和到底部自动加载
- Android LRecyclerView实现下拉刷新,滑动到底部自动加载更多
- Android LRecyclerView实现下拉刷新,滑动到底部自动加载更多
- Android LRecyclerView实现下拉刷新,滑动到底部自动加载更多
- Android LRecyclerView实现下拉刷新,滑动到底部自动加载更多
- Android 下拉刷新框架实现、仿新浪微博、QQ好友动态滑到底部自动加载
- Android LRecyclerView实现下拉刷新,滑动到底部自动加载更多
- Android LRecyclerView实现下拉刷新,滑动到底部自动加载更多
- Jquery的 scroll事件,实现当滚动条到达最底部时,自动加载新项
- RecyclerView实现下拉刷新与自动加载控件封装
- SwipeRefreshLayout+RecyclerView实现下拉刷新上拉自动加载
- Jquery的 scroll事件,实现当滚动条到达最底部时,自动加载新项[转]
- 基于javascript实现浏览器滚动条快到底部时自动加载数据
- 自定义上拉加载下拉刷新控件,从而实现滑动到底部时上拉加载更多的功能
- Android SwipeRefreshLayout实现下拉刷新,上拉加载、滑动加载(自动加载)和点击加载
- +js实现分页浏览到底部自动加载
- 使用jquery实现页面滚动到底部自动加载新的信息
- vueJs实现DOM加载完之后自动下拉到底部的实例代码
- jQuery实现新浪微博自动底部加载的方法
- Android 实现ListView滚动到底部自动加载数据