2013-01-31 26 views
4

在我的WP8應用程序中,我試圖實現一個功能,可以讓我保存LongMultiListSelector的滾動位置,並在稍後(例如墓碑後)將其滾動到該位置。事實證明這是一個很有意義的嘗試,儘管取得了一些進展,但我仍然有疑問。LongListSelector中的滾動管理

正如我現在明白,我需要以下的東西這個工作:

  1. 顯然的能力滾動到一個指定的項目我現在有。 (LongMultiListSelector,儘管是LongListSelector的擴展,但沒有ScrollTo方法,但LongListSelector可以在LongMultiListSelector的可視化樹中找到,這就是我所做的)。

    1.1。 能力滾動到指定的項目與動畫和這一個我還沒有解決。這並不重要,但它會很好。經過一番搜索,我發現一旦LongListSelectorAnimateTo方法,但目前它沒有。

  2. 能夠找出的LongListSelector項目在屏幕上當前可見的,所以我可以保存這些可見的項目之一的索引,然後滾動到它。這一個我還沒有解決,這是非常重要的。

    經過一番搜索,我發現了這個問題:WP7 Toolkit Update Removed GetItemsInView() from the LongListSelector。是說在以前的時間LongListSelector有一個GetItemsInView功能,在以後它有LinkUnlink事件特別是爲此目的。目前LongListSelector既沒有這些選項。

    所以主要的問題是我現在該怎麼做才能找到LongListSelector中的可見項目?

回答

4

我看起來像目前沒有簡單和直接的方式來找到哪些項目是可見的。幸運的是,不是所有的東西都丟ScrollBarLongListSelector都可以在運行時在LongListSelector的可視化樹中找到。需要

LongListSelector爲它的ScrollTo方法和ScrollBar我需要一個ValueChanged事件在那裏我能得到ScrollBar.MaximumScrollBar.Value這是控制高度和電流分別偏移。問題再次是,這兩個屬性並不總是正確計算,可能是由於LongListSelector的虛擬化以及它並未一次顯示所有項目的事實。好的是,負距離(最大值 - 從列表末尾開始的偏移量)雖然相對而言總是正確的。

因此,如果您可以手動計算您的LongListMultiSelector的實際高度,則可以使用該實際高度和負距離來滾動管理。就我而言,這很容易,因爲所有的物品都是一樣的高度。

+0

安東你有這個在線的任何代碼示例? github的要點或者什麼?我對這種手動計算方法感興趣! – Depechie

0

答到能力,滾動到指定的項目與動畫

This文章將幫助你。

主要想法:ScrollViewer的VerticalOffset Property被標記爲只讀。所以你可以創建一個shell類來幫助你爲VerticalOffset設置動畫。

相關問題