`
h416756139
  • 浏览: 365799 次
  • 性别: 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分页通常需要以下步骤: 1. **数据管理**:维护一个包含所有数据的列表,例如ArrayList或BindingList。根据分页大小(每页显示的数据条数)来计算总页数。 2. **初始化控件**:设置ListBox的虚拟模式...

    wpf ListBox 分页显示图片

    总结起来,实现WPF ListBox分页显示图片主要涉及以下步骤: 1. 创建数据模型和数据集。 2. 实现ICollectionView分页。 3. 绑定ListBox并设置ItemTemplate显示图片。 4. 监听ScrollChanged事件,实现自动加载下一页。...

    listbox动态加载item

    首先,我们要明确动态加载的基本思路:根据用户操作或特定事件,如滚动、搜索或分页,向服务器发送请求,获取部分数据并将其添加到ListBox中。这种技术通常与Ajax(异步JavaScript和XML)相结合,利用JavaScript进行...

    wpf listBox DataGrid 分页

    本文将详细介绍如何在WPF中为`ListBox`和`DataGrid`实现分页功能。 首先,我们需要理解`ListBox`和`DataGrid`的基本用法。`ListBox`是一个简单的列表控件,它可以显示一维数据集,如字符串数组或自定义对象列表。`...

    wpf listbox,datagrid分页

    在VS2012环境下,我们可以利用WPF的特性来实现`ListBox`和`DataGrid`的分页功能。 `ListBox` 是一个简单的列表控件,它可以显示一列或多个列的数据,并允许用户进行选择。而`DataGrid` 更加强大,它不仅可以显示...

    wpf listbox,datagrid分页功能

    本篇文章将详细探讨如何在WPF中为`ListBox`和`DataGrid`实现分页功能。 一、`ListBox` 分页 1. 数据源绑定:首先,你需要将数据源绑定到`ListBox`,通常使用`ItemsSource`属性。例如,你可以绑定一个`...

    WPF listBox 漂亮的listBOX

    在标题中提到了“AutoScroll ListBox”,这是指当用户滚动到底部时,`ListBox`会自动加载更多数据,实现无限滚动的效果。这种功能通常通过结合虚拟化技术(如`VirtualizingStackPanel`)和数据分页来实现。以下是一...

    wpf的listbox滚动翻页

    为了解决这个问题,我们可以实现分页加载,即每次只加载一部分数据到`ListBox`中。 ### 二、实现滚动翻页的策略 1. **虚拟化**:WPF提供了虚拟化技术,当`ListBox`项数过多时,只有可视区域内的项会被实际创建。这...

    获取ListBox事件处理代码

    在.NET框架中,C#是一种常用的编程语言,用于开发Windows应用程序。...同时,通过对“ScrollingListbox_demo”文件的进一步研究,你可以学习到如何实现更复杂的滚动行为,如分页加载数据,从而优化用户体验。

    list列表框排序

    可以考虑使用虚拟列表技术,只渲染可视区域的数据,或者使用分页加载策略。 7. **可视化反馈**:排序后,通常需要更新列头的图标(升序/降序箭头)来指示当前的排序状态。此外,更新列表框内容时,确保视觉平滑过渡...

    c# listbox显示数据库的内容

    7. **性能优化**:如果你的数据量非常大,考虑分页加载或者只加载必要的数据,避免一次性加载所有数据导致性能问题。 8. **事件处理**:还可以为ListBox添加事件监听,比如当用户选择某一项时触发`...

    ListBox快速增量查询

    在处理大量数据时,传统的ListBox加载所有数据可能会导致性能下降,尤其是在实时更新或搜索操作中。为了解决这个问题,我们可以采用“快速增量查询”技术,提高用户界面的响应速度。 快速增量查询是一种优化策略,...

    漂亮的客户端ListBox控件,采用客户端绑定数据源

    1. **分页显示**:如果数据量大,可以考虑实现分页功能,避免一次性加载大量数据导致页面响应变慢。 2. **搜索过滤**:提供搜索框,让用户快速找到想要的选项。 3. **排序与筛选**:允许用户根据需要对选项进行排序...

    城市管理系统 LIstBox控件

    分页可以避免一次性加载过多数据,提高系统响应速度。滚动条则能帮助用户在长列表中导航。 最后,界面设计和布局也是关键。城市管理系统应该有清晰的界面,使用户能直观地找到ListBox并理解其用途。使用资源管理器...

    扩展DropDownList控件和ListBox控件

    扩展这些控件通常是为了增加额外的功能,例如自定义渲染、动态加载数据、添加搜索功能、提供分页、支持拖放等。在给定的文件中,"YYControls.dll"可能是一个包含扩展控件的库,而"YYControls.sln"是解决方案文件,...

    DropDownList_ListBox数据绑定.rar_DropDownList_listbox net

    6. **优化性能**:对于大量数据,考虑使用分页或延迟加载策略,以提高页面加载速度。可以使用PagedDataSource类或自定义分页逻辑来实现。 通过上述方法,开发者可以在ASP.NET项目中灵活地使用DropDownList和ListBox...

    C#分页控件

    在C#的WinForms环境中,尽管没有内置的分页控件,开发者可以创建自定义控件,组合使用如Button、Label和ListBox等基本控件来实现分页功能。 实现分页控件时,关键步骤包括: - **数据获取**:从数据库或其他数据源...

    C#的ListBox

    - 对于大量数据,考虑分页加载或异步加载,避免一次性加载所有数据导致的性能问题。 通过以上介绍,我们可以了解到C#中ListBox的基本使用和一些高级特性。在实际应用中,开发者可以根据需求灵活运用这些知识点,...

    listbox漂亮控件

    4. **扩展功能**:开发者可能增加了额外的功能,比如搜索过滤、拖放操作、多级分类或分页加载,这些特性使控件更强大,更符合现代应用的需求。 5. **性能优化**:虽然美观,但这个控件可能也进行了性能优化,能高效...

    listbox的使用

    9. 分页加载:对于大型数据集,考虑使用虚拟列表框(`LBS_VIRTUAL`样式)。仅在需要时加载数据,以提高性能和内存效率。 10. 搜索功能:为List Box添加搜索功能,可以提升用户体验。可以通过监听键盘事件并过滤列表...

Global site tag (gtag.js) - Google Analytics