自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談ListBox在Windows Phone 7中的使用

移動(dòng)開發(fā)
在Windows Phone 7 中頁面的布局一般分為:Panoramic、Pivot、List和Full Screen。而通常List的實(shí)現(xiàn)方式就是ListBox。本文介紹了ListBox的基礎(chǔ)知識(shí)。

在Windows Phone 7 中頁面的布局一般分為:Panoramic、Pivot、List和Full Screen。而通常List的實(shí)現(xiàn)方式就是ListBox。

一、什么是ListBox?

ListBox 是一個(gè)顯示項(xiàng)集合的控件。一次可以顯示 ListBox 中的多個(gè)項(xiàng)。

ListBox繼承自ItemsControl,可以使用Items或者ItemsSource設(shè)置其內(nèi)容。

二、在ListBox中顯示數(shù)據(jù)

我們可以通過兩種方式在ListBox中顯示:直接內(nèi)嵌ListBoxItem(或其他UIElement,如TextBlock等) 與數(shù)據(jù)綁定(90%情況下均為數(shù)據(jù)綁定實(shí)現(xiàn))。

1.直接內(nèi)嵌ListBox示例代碼如下:

2.數(shù)據(jù)綁定的示例代碼如下:

XAML代碼 :

后置代碼:

最終的現(xiàn)實(shí)效果都是一樣的,如下圖:

三、 如果獲取ListBox的ItemTemplate/DataTemplate 中指定的控件

當(dāng)我們使用數(shù)據(jù)綁定的控件,比如說ListBox,我們通常會(huì)自定義ListBox的模板(一般建議使用Blend工具修改模板),而在某些情況下,我們需要獲取DataTemplate中的某一控件,以對(duì)其做一些特定的操作。那我們?nèi)绾潍@取呢?事實(shí)上,我們可以使用VisualTreeHelper 類來獲取指定的控件。下面是具體的Demo:

前臺(tái)XAML代碼:

后置代碼代碼:

四、ListBox 性能相關(guān)

在Silverlight中,為了將數(shù)據(jù)顯示給用戶,我們需要加載數(shù)據(jù)和綁定數(shù)據(jù),但是哪個(gè)會(huì)導(dǎo)致性能問題呢?答案是:根據(jù)你的數(shù)據(jù)類型以及界面(UI)的復(fù)雜性而定。

通常,加載數(shù)據(jù)可以在UI線程或者后臺(tái)線程中實(shí)現(xiàn),數(shù)據(jù)存在的形式也不經(jīng)相同,有的序列化為二進(jìn)制數(shù)據(jù),有的序列化為XML文件,有的則是圖片形式存在等等。而數(shù)據(jù)綁定又有三種不同的綁定形式:一次綁定(One Time)、單向綁定(One Way)和雙向綁定(Two Way)。

這里簡單介紹下什么是VSP(VirtualizingStackPanel)

MSDN解釋為:將內(nèi)容排列和虛擬化在一行上,方向?yàn)樗交虼怪薄?ldquo;虛擬化”是指一種技術(shù),通過該技術(shù),可根據(jù)屏幕上所顯示的項(xiàng)來從大量數(shù)據(jù)項(xiàng)中生成user interface (UI) 元素的子集。僅當(dāng) StackPanel 中包含的項(xiàng)控件創(chuàng)建自己的項(xiàng)容器時(shí),才會(huì)在該面板中發(fā)生虛擬化。 可以使用數(shù)據(jù)綁定來確保發(fā)生這一過程。 如果創(chuàng)建項(xiàng)容器并將其添加到項(xiàng)控件中,則與 StackPanel 相比,VirtualizingStackPanel 不能提供任何性能優(yōu)勢(shì)。

VirtualizingStackPanel 是 ListBox 元素的默認(rèn)項(xiàng)宿主。 默認(rèn)情況下,IsVirtualizing 屬性設(shè)置為 true。當(dāng) IsVirtualizing 設(shè)置為 false 時(shí),VirtualizingStackPanel 的行為與普通 StackPanel 一樣。

我們可以將VSP理解為當(dāng)需要時(shí),VSP會(huì)生成容器對(duì)象,而當(dāng)對(duì)象不在可視范圍內(nèi)時(shí),VSP就把這些對(duì)象從內(nèi)存中移除。當(dāng)ListBox很想當(dāng)大數(shù)據(jù)量的項(xiàng)目時(shí),我們不需要將不在可視范圍中的對(duì)象加載到內(nèi)存中,從而解決了內(nèi)存的問題。另外VSP有一個(gè)屬性CacheMode設(shè)置緩存表示形式,默認(rèn)設(shè)為Standard。當(dāng)我們需要循環(huán)顯示,可以將其設(shè)置為Recycling。

在ListBox中使用VSP來進(jìn)行數(shù)據(jù)虛擬化時(shí),我們需要注意以下幾點(diǎn):

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

2. 在數(shù)據(jù)對(duì)象可以提供相應(yīng)值時(shí),盡量避免使用復(fù)雜的轉(zhuǎn)換器(Converter)

3. 不要在ListBox中內(nèi)嵌ListBox

4. 強(qiáng)烈推薦不要在DataTemplate中使用用戶控件

5. 在DataTemplate中不要使用自定義控件

責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2010-04-08 17:40:23

Windows Pho

2012-05-08 13:54:40

ToastPrompt

2012-02-02 17:16:11

Windows PhoC#聯(lián)系人資料

2010-12-01 13:40:13

樞軸控件Windows Pho

2010-10-11 14:42:49

Windows Pho

2010-12-01 13:55:29

地圖插件Windows Pho

2012-05-23 15:46:39

數(shù)字羅盤

2010-11-26 16:00:08

Windows Pho

2011-02-13 09:17:01

Windows 8Windows Pho

2013-07-30 11:18:37

Windows PhoWindows Pho

2010-05-05 13:16:02

Windows PhoWindows CE

2011-03-21 09:05:40

IronRubyWindows Pho

2010-12-01 09:50:21

全景視圖Windows Pho

2010-10-20 16:47:06

MarketplaceWindows Pho

2010-03-26 18:08:18

Windows Pho

2010-12-21 10:02:48

SilverlightWindows Pho

2012-02-02 17:10:35

Windows PhoC#發(fā)送短信

2011-06-08 09:43:15

Windows Pho

2010-08-05 15:26:19

Windows Pho

2010-07-21 14:56:21

Windows Pho
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)