2010-10-30 59 views
0

在Windows Phone 7 Silverlight應用程序中,我有一個包含大量項目的列表框,這些項目是從外部數據源動態生成的。其中一個項目將是「當前」,所以我想以編程方式滾動列表框,以便該項目顯示爲列表框中最頂端的可見項目 - 因此用戶不必。WP7:ListBox ScrollToTop?

listBox.ScrollIntoView(itemOfInterest); 

但是,這隻會滾動了這麼多,該itemOfInterest在列表框的底部。

如何以編程方式滾動列表框,使特定項目出現在視口的頂部?

回答

5

這也可以通過滾動到最後一個項目然後到當前項目以相當簡單的方式完成;

 FirstListBox.ScrollIntoView(FirstListBox.Items[lastItemIndex]); 
     FirstListBox.ScrollIntoView(FirstListBox.Items[currentItemIndex]); 
+0

這可按預期工作:-) – driis 2010-10-31 16:26:37

2

如果您知道列表框中可見項目的數量,則可以計算偏移量,使得您的項目顯示在頂部而不是底部,方法是滾動查看項目位置處的項目加上列表框持有項目:

int itemToView=itemOfInterest+numItemsDisplayed; 

你當然需要檢查itemToView,以確保它是不是出界,稱listBox.ScrollIntoView前()。

+0

我想到這一點,但我的項目是在高度動態的。我可以在運行時計算列表框中每個項目的高度嗎? – driis 2010-10-30 17:34:12

+0

您可以獲取每個顯示項目的渲染高度,但是此時執行此操作的方法可以讓我擺脫困境...... – 2010-10-30 17:35:50

0
listboxNews.ScrollIntoView(listboxNews.Items.First());