`
h416756139
  • 浏览: 359807 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ListBox的分页加载

    博客分类:
  • WP7
 
阅读更多

      ListBox的分页加载,相信在很多应用中大家都已经见到过了。但是在WP7开发中,这个功能开发起来似乎是不那么直观(因为没有那么个ScrollEnd事件),我在学习开发这个功能的时候第一步是先百度谷歌Bing的,为了不重复造轮子。其实有很多人都在问这个问,大家的共同关注点只有一个,就是如何判断ListBox的滚动条滚动到了底部,所以,此篇文章我也就只围绕如何判断滚动到底来展开了,其他的部分暂略。我记得曾经看到了一个英文的文章实现了这个效果,写的很复杂,好多好多的类,本人比较懒,就没继续看……,后来从某中文论坛看到了一个非常简单的方法,不得不感叹我们中国人的聪明才智啊。

  private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
        {
            List<ScrollBar> scrollBarList = GetVisualChildCollection<ScrollBar>(lstBizs);
            foreach (ScrollBar scrollBar in scrollBarList)
            {
                if (scrollBar.Orientation == System.Windows.Controls.Orientation.Horizontal)
                {
                    
                }
                else
                {
                    scrollBar.ValueChanged += new RoutedPropertyChangedEventHandler<double>(verticalScrollBar_ValueChanged);
                }
            }
        }


        private void verticalScrollBar_ValueChanged(object sender, RoutedEventArgs e)
        {
            ScrollBar scrollBar = (ScrollBar)sender;
            object valueObj = scrollBar.GetValue(ScrollBar.ValueProperty);
            object maxObj = scrollBar.GetValue(ScrollBar.MaximumProperty);
            if (valueObj != null && maxObj != null)
            {
                double value = (double)valueObj;
                double max = (double)maxObj - 1.0;
                if (value >= max)
                {
                   //读取下一页的数据
                }
            }
        }

 

        public static List<T> GetVisualChildCollection<T>(object parent) where T : UIElement
        {
            List<T> visualCollection = new List<T>();
            GetVisualChildCollection(parent as DependencyObject, visualCollection);
            return visualCollection;
        }
        private static void GetVisualChildCollection<T>(DependencyObject parent, List<T> visualCollection) where T : UIElement
        {
            int count = VisualTreeHelper.GetChildrenCount(parent);
            for (int i = 0; i < count; i++)
            {
                DependencyObject child = VisualTreeHelper.GetChild(parent, i);
                if (child is T)
                {
                    visualCollection.Add(child as T);
                }
                else if (child != null)
                {
                    GetVisualChildCollection(child, visualCollection);
                }
            }
        }

   这个代码非常的简介精悍,并非我原创,但我直接拿过来之后发现它运行的很好,真的很好用。我唯一的一点修改就是“double max = (double)maxObj - 1.0; ”,这里说明一下,value是ScrollBar当前的值,max可想而知是最大值,但是如果当用户把滚动条拉到底部才开始加载下页数据,会明显的出现一个停顿,所以我设定的规则是“当用户把滚动条拉到倒数第一行的时候就开始加载下页数据”,1.0的这个值按需求修改就好了。

分享到:
评论

相关推荐

    listbox的分页问题,我找了好久的

    listbox的分页问题,我找了好久的,你也可以把它改成grideview

    使用MVVM模式和WCF服务实现图片分页显示

    (1)数据使用WCF服务加载 (2)定制ListBox数据模板 (3)采用MVVM模式实现分页 注意:在运行前需要修改WCF服务Service1.svc方法GetAllPictureData中的图片文件夹路径,默认是C:\Users\My_PC\Pictures\picture

    微信小程序实现移动端滑动分页效果(ajax)

    一般在PC上我们要分页都是通过上一页和下一页来实现的,手机通过当下滑到一定程度的时候自动加载下一页面。 实现思路:首先加载部分数据,当下滑到某个元素可见的时候,如果还有数据,则新发送请求,然后追加在当前...

    科研信息管理系统论文

    9.7.6 分页(在属性中的设置分页) 45 9.8 LISTBOX的数据的添加与移除并把数据添加到数据库 45 9.8.1listbox的数据的添加 45 9.8.2listbox的数据的删除 45 9.8.3 把listbox中的数据的添加到数据库 45 9.9 控件...

    C#开发经验技巧宝典

    0398 动态加载主题到页面中 223 0399 利用Table布局Web页面 223 0400 FrameSet框架的应用 224 0401 IFrame框架的应用 224 0402 页面尺寸自动适应1024×768像素和800×600分辨率 225 10.2 网页性能设计 ...

    asp.net专家疑难解答200问源码

    39.如何应用IsPostBack控制页面的加载 41.如何使用Trace对象进行跟踪调试(页面级) 42.如何使用#Include语法将文件添加到页面 43.如何使用编程的方式处理异常信息 44.如何将网页错误信息写入事件日志 第3章 ...

    ASP.NET 控件的使用

    10.4 使用ListBox控件 310 10.5 使用CheckBoxList控件 313 10.6 使用BulletedList控件 314 10.7 创建自定义的List控件 317 10.8 小结 324 第11章 使用GridView控件 325 11.1 GridView控件基础 325 11.1.1 显示数据 ...

    ASP.NET.4揭秘

    10.4 使用listbox控件351 10.5 使用checkboxlist控件355 10.6 使用bulletedlist控件357 10.7 创建自定义的列表控件361 10.8 小结368 第11章 使用gridview控件369 11.1 gridview控件基础369 11.1.1 显示数据369 ...

    asp.net专家疑难解答200问

    如何应用IsPostBack控制页面的加载 41.如何使用Trace对象进行跟踪调试(页面级) 42.如何使用#Include语法将文件添加到页面 43.如何使用编程的方式处理异常信息 44.如何将网页错误信息写入事件日志 ...

    C#编程经验技巧宝典

    111 &lt;br&gt;0184 如何在ASP.NET中获取文件的扩展名 111 &lt;br&gt;0185 如何在ASP.NET中用URL在页面之间传值 112 &lt;br&gt;0186 如何使用IsPostBack实现ASP.NET页面加载 112 &lt;br&gt;0187 如何利用输出缓存技术缓存...

    Visual C# 2008程序设计经典案例设计与实现

    案例8 在图像上动态加载文字 案例9 水平和垂直遮罩图像动画效果 案例10 图像拉伸动画效果 案例11 百叶窗图像动画效果 案例12 翻转和扩展图像动画效果 案例13 图像的纹理和浮雕效果 案例14 图像的马赛克效果 ...

    C# 源码 C#2008经典案例

    案例8 在图像上动态加载文字 案例9 水平和垂直遮罩图像动画效果 案例10 图像拉伸动画效果 案例11 百叶窗图像动画效果 案例12 翻转和扩展图像动画效果 案例13 图像的纹理和浮雕效果 案例14 图像的马赛克效果 本章小结...

    C#设计经典案例设计与实现

    案例8 在图像上动态加载文字 案例9 水平和垂直遮罩图像动画效果 案例10 图像拉伸动画效果 案例11 百叶窗图像动画效果 案例12 翻转和扩展图像动画效果 案例13 图像的纹理和浮雕效果 案例14 图像的马赛克效果 本章小结...

    Visual+C#+2008程序设计经典案例设计与实现.rar

    案例8 在图像上动态加载文字 案例9 水平和垂直遮罩图像动画效果 案例10 图像拉伸动画效果 案例11 百叶窗图像动画效果 案例12 翻转和扩展图像动画效果 案例13 图像的纹理和浮雕效果 案例14 图像的马赛克效果 本章小结...

    ASP.NET3.5从入门到精通

    5.7 列表控件(DropDownList,ListBox 和BulletedList) 5.7.1 DropDownList 列表控件 5.7.2 ListBox 列表控件 5.7.3 BulletedList 列表控件 第一篇窗口与界面编程 11 5.8 面板控件(Panel) 5.9 占位控件...

    ASP.NET 3.5 开发大全11-15

    5.7 列表控件(DropDownList,ListBox和BulletedList) 5.7.1 DropDownList列表控件 5.7.2 ListBox列表控件 5.7.3 BulletedList列表控件 5.8 面板控件(Panel) 5.9 占位控件(PlaceHolder) 5.10 日历控件(Calendar...

    ASP.NET 3.5 开发大全

    5.7 列表控件(DropDownList,ListBox和BulletedList) 5.7.1 DropDownList列表控件 5.7.2 ListBox列表控件 5.7.3 BulletedList列表控件 5.8 面板控件(Panel) 5.9 占位控件(PlaceHolder) 5.10 日历控件(Calendar...

    ASP.NET 3.5 开发大全1-5

    5.7 列表控件(DropDownList,ListBox和BulletedList) 5.7.1 DropDownList列表控件 5.7.2 ListBox列表控件 5.7.3 BulletedList列表控件 5.8 面板控件(Panel) 5.9 占位控件(PlaceHolder) 5.10 日历控件(Calendar...

    ASP.NET 3.5 开发大全word课件

    5.7 列表控件(DropDownList,ListBox和BulletedList) 5.7.1 DropDownList列表控件 5.7.2 ListBox列表控件 5.7.3 BulletedList列表控件 5.8 面板控件(Panel) 5.9 占位控件(PlaceHolder) 5.10 日历控件(Calendar...

Global site tag (gtag.js) - Google Analytics