Windows Phone 7(WP7)開發 ListBox的分頁載入

來源:互聯網
上載者:User

  ListBox的分頁載入,相信在很多應用中大家都已經見到過了。但是在WP7開發中,這個功能開發起來似乎是不那麼直觀(因為沒有那麼個ScrollEnd事件),我在學習開發這個功能的時候第一步是先百度GoogleBing的,為了不重複造輪子。其實有很多人都在問這個問,大家的共同關注點只有一個,就是如何判斷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的這個值按需求修改就好了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.