在Windows Phone 7 Silverlight应用程序中,我有一个包含大量项目的ListBox,这些项目是从外部数据源动态生成的。其中一个项目将是“当前”,所以我想以编程方式滚动ListBox,使项目显示为ListBox中最顶层的可见项目 - 因此用户不必这样做。
有
listBox.ScrollIntoView(itemOfInterest);
但是这只会滚动太多,itemOfInterest
位于ListBox的底部。
如何以编程方式滚动ListBox,以便在视口顶部显示特定项目?
答案 0 :(得分:5)
这也可以通过滚动到最后一项然后滚动到当前项目以相当直接的方式完成;
FirstListBox.ScrollIntoView(FirstListBox.Items[lastItemIndex]);
FirstListBox.ScrollIntoView(FirstListBox.Items[currentItemIndex]);
答案 1 :(得分:2)
如果您知道列表框中可见的项目数量,则可以通过滚动查看项目位置的项目加上项目数量来计算偏移量,使项目显示在顶部而不是底部列表框中包含:
int itemToView=itemOfInterest+numItemsDisplayed;
在调用listBox.ScrollIntoView()之前,您当然需要检查itemToView以确保它不会超出范围。
答案 2 :(得分:0)
listboxNews.ScrollIntoView(listboxNews.Items.First());