淺談ListBox在Windows Phone 7 中的使用

來源:互聯網
上載者:User

在Windows Phone 7 Tips (5) 中曾經提到,在Windows Phone 7 中頁面的布局一般分為:Panoramic、Pivot、List和Full Screen。而通常List的實現方式就是ListBox。

一、什麼是ListBox?

ListBox 是一個顯示項目集合的控制項。一次可以顯示 ListBox 中的多個項。

ListBox繼承自ItemsControl,可以使用Items或者ItemsSource設定其內容。

 

二、在ListBox中顯示資料

我們可以通過兩種方式在ListBox中顯示:直接內嵌ListBoxItem(或其他UIElement,如TextBlock等) 與資料繫結(90%情況下均為資料繫結實現)。

1.直接內嵌ListBox範例程式碼如下:

 

2.資料繫結的範例程式碼如下:

XAML代碼 :

 

後置代碼: 

 

最終的現實效果都是一樣的,如:

 

三、 如果擷取ListBox的ItemTemplate/DataTemplate 中指定的控制項

 當我們使用資料繫結的控制項,比如說ListBox,我們通常會自訂ListBox的模板(一般建議使用Blend工具修改模板),而在某些情況下,我們需要擷取DataTemplate中的某一控制項,以對其做一些特定的操作。那我們如何擷取呢?事實上,我們可以使用VisualTreeHelper 類來擷取指定的控制項。下面是具體的Demo:

前台XAML代碼:

 

後置代碼代碼:

 

 

 

四、ListBox 效能相關

在Silverlight中,為了將資料顯示給使用者,我們需要載入資料和綁定資料,但是哪個會導致效能問題呢?答案是:根據你的資料類型以及介面(UI)的複雜性而定。

通常,載入資料可以在UI線程或者後台線程中實現,資料存在的形式也不經相同,有的序列化為位元據,有的序列化為XML檔案,有的則是圖片形式存在等等。而資料繫結又有三種不同的綁定形式:一次綁定(One Time)、單向綁定(One Way)和雙向繫結(Two Way)。

 

這裡簡單介紹下什麼是VSP(VirtualizingStackPanel)

MSDN解釋為:將內容排列和虛擬化在一行上,方向為水平或垂直。“虛擬化”是指一種技術,通過該技術,可根據螢幕上所顯示的項來從大量資料項目中產生user interface (UI) 元素的子集。僅當 StackPanel 中包含的項控制項建立自己的項容器時,才會在該面板中發生虛擬化。 可以使用資料繫結來確保發生這一過程。 如果建立項容器並將其添加到項控制項中,則與 StackPanel 相比,VirtualizingStackPanel 不能提供任何效能優勢。

VirtualizingStackPanel 是 ListBox 元素的預設項宿主。 預設情況下,IsVirtualizing 屬性設定為 true。當 IsVirtualizing 設定為 false 時,VirtualizingStackPanel 的行為與普通 StackPanel 一樣。

我們可以將VSP理解為當需要時,VSP會產生容器物件,而當對象不在可視範圍內時,VSP就把這些對象從記憶體中移除。當ListBox很想當大資料量的項目時,我們不需要將不在可視範圍中的對象載入到記憶體中,從而解決了記憶體的問題。另外VSP有一個屬性CacheMode設定緩衝表示形式,預設設為Standard。當我們需要迴圈顯示,可以將其設定為Recycling。

在ListBox中使用VSP來進行資料虛擬化時,我們需要注意以下幾點:

1.       確保在DataTemplate 中的容器(如Grid)大小固定

2.       在資料對象可以提供相應值時,盡量避免使用複雜的轉換器(Converter)

3.       不要在ListBox中內嵌ListBox

4.       強烈推薦不要在DataTemplate中使用使用者控制項

5.       在DataTemplate中不要使用自訂控制項 

以上是對ListBox的一個簡單介紹,在以後的部落格中將會繼續深入ListBox。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.