WP--两种滚动条到底部加载数据的方法
2015-01-22 10:21
330 查看
如今大多数手机用户所关心的网络流量的消耗,当你的App涉及到从网络服务中获取数据,应该尽可能以最有效的方式。让用户等待,就算你的应用程序下载大量的数据不会影响用户体验。而不是让你的App只下载少量的数据。今天我就来和大家介绍下WP中两种让滚动条到底部后再加载数据的方法。
一、
我先介绍第一种方法,贴出几个关键代码用于查找控件。
在ListBox控件的Loaded方法中添加如下代码
当滚动条到达底部的时候就会执行 MainPageVM.LoadNextData();方法...这个方法可以改成你想要的。
第一种方法很简单明了...不需要用任何控件就能实现了!
-----------------------------------------------------------------------
二、
第二种则是用控件来实现的..首先你要下载DanielVaughan.ScrollViewerMonitor.rar,这是国外程序员封装好的一个控件
使用方法更加简单,如下所示:
注意的这里的AtEndCommand是一个附加属性,当用户滚动到列表末尾后,就会执行指定的命令。
转自:/article/5052897.html
一、
我先介绍第一种方法,贴出几个关键代码用于查找控件。
public static T FindFirstChildOfType<T>(DependencyObject root) where T : class { Queue<DependencyObject> queue = new Queue<DependencyObject>(); queue.Enqueue(root); while (0 < queue.Count) { DependencyObject dependencyObject = queue.Dequeue(); if (dependencyObject == null) { return default(T); } int num = VisualTreeHelper.GetChildrenCount(dependencyObject) - 1; while (0 <= num) { DependencyObject child = VisualTreeHelper.GetChild(dependencyObject, num); T t = child as T; if (t != null) { return t; } queue.Enqueue(child); num--; } } return default(T); } public static T FindChildOfType<T>(DependencyObject root) where T : class { Queue<DependencyObject> queue = new Queue<DependencyObject>(); queue.Enqueue(root); while (queue.Count > 0) { DependencyObject dependencyObject = queue.Dequeue(); int num = VisualTreeHelper.GetChildrenCount(dependencyObject) - 1; while (0 <= num) { DependencyObject child = VisualTreeHelper.GetChild(dependencyObject, num); T t = child as T; if (t != null) { return t; } queue.Enqueue(child); num--; } } return default(T); }
在ListBox控件的Loaded方法中添加如下代码
private void AddHandler() { this.m_scrollViewer = CommonUtil.FindChildOfType<ScrollViewer>(this.lstList); if (this.m_scrollViewer != null) { this.m_scrollBar = CommonUtil.FindChildOfType<ScrollBar>(this.m_scrollViewer); if (this.m_scrollBar != null) { m_scrollBar.ValueChanged += bar_ValueChanged; m_scrollBar.SizeChanged += bar_SizeChanged; } } } void lstList_Loaded(object sender, RoutedEventArgs e) { AddHandler(); }
当滚动条到达底部的时候就会执行 MainPageVM.LoadNextData();方法...这个方法可以改成你想要的。
void bar_SizeChanged(object sender, SizeChangedEventArgs e) { } void bar_ValueChanged(object sender, RangeBaseValueChangedEventArgs e) { ScrollBar bar = (ScrollBar)sender; object obj2 = bar.GetValue(RangeBase.ValueProperty); object obj3 = bar.GetValue(RangeBase.MaximumProperty); if ((obj2 != null) && (obj3 != null)) { double num = (double)obj2; double num2 = ((double)obj3) - 2.0; if (num >= num2) { this.LoadingMore.Visibility = Visibility.Visible; this.LoadingMoreRing.IsActive = true; var MainPageVM = base.DataContext as MainPageViewModel; MainPageVM.LoadNextData(); } } }
第一种方法很简单明了...不需要用任何控件就能实现了!
-----------------------------------------------------------------------
二、
第二种则是用控件来实现的..首先你要下载DanielVaughan.ScrollViewerMonitor.rar,这是国外程序员封装好的一个控件
使用方法更加简单,如下所示:
<ListBox ItemsSource="{Binding Items}" u:ScrollViewerMonitor.AtEndCommand="{Binding FetchMoreDataCommand}" />
注意的这里的AtEndCommand是一个附加属性,当用户滚动到列表末尾后,就会执行指定的命令。
转自:/article/5052897.html
相关文章推荐
- Windows Phone开发经验谈(18)-总结两种滚动条到底部加载数据的方法
- ADO.NET 中DataTable中加载数据又两种方法
- jQuery实现当拉动滚动条到底部加载数据
- jQuery实现当拉动滚动条到底部加载数据
- 滚动条滚动到底部加载其他数据(Jquery+ajax)
- jQuery实现当拉动滚动条到底部加载数据
- 加载plist文件中的数据,两种方法
- ADO.NET 中DataTable中加载数据又两种方法
- WP & Win10开发:实现ListView下拉加载的两种方法
- jQuery 判断滚动条是否到了页面底部(ajax加载数据)
- JQuery实现浏览器的滚动条滚动到底部后加载数据
- 对easyui datagrid 进行扩展拉动滚动条到底部自动加载数据《二》
- jQuery实现当拉动滚动条到底部加载数据
- WP & Win10开发:实现ListView下拉加载的两种方法
- ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)
- ADO.NET 中DataTable中加载数据又两种方法
- 根据滚动条分批加载方法,滚动条拉到底部触发
- ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)
- jquery 瀑布流原理 页面到达底部加载数据的方法
- Android实现listview动态加载数据分页的两种方法