2014-07-01 130 views
0

我有一個列表框。列表框項目可以是圖像,文本,音頻,視頻等。使用Internet獲取項目,有時列表變得太長。我想在我的列表框中實現「Go To Top」功能,這些功能在很多網站中都有使用。只要用戶開始滾動,就會出現一個按鈕,將其置於頂部,如果滾動回頂部,該按鈕將消失。Windows Phone 8的ScrollViewer事件

問題是我不知道該怎麼做。如果我禁用我的列表框的滾動查看器並將列表框放在滾動查看器中,那麼我不知道應該使用哪個滾動查看器的事件和屬性?

回答

1

您可以使用RadDataboundListBox上的ScrollStateChanged事件來查看列表框是否正在滾動。如果是,你可以顯示你的ScrollToTop按鈕。

事情是這樣的:

private void RadDataBoundListBox_ScrollStateChanged(object sender, ScrollStateChangedEventArgs e) 
{ 
    if (e.NewState == ScrollState.Scrolling) 
    { 
     // Code to show the ScrollToTop button 
    } 
} 

你可以玩的不同ScrollStates顯示和在不同的時間隱藏ScrollToTop按鈕。 (即當NewState == ScrollState.TopStretch時,你可以隱藏該按鈕。)

如果你綁定到ListBox的ItemsSource,你可以使用上面提到的BringIntoView方法。

RadDataBoundListBox.BringIntoView(BoundObservableCollection[0]); 

我希望這會有所幫助。 謝謝, 約書亞

+0

謝謝約書亞。但是現在我沒有使用RadDataBoundListBox,所以現在我會找到自己的方式(至少現在我已經有了實現它的想法)。問候,Anagh。 – AnaghSharma

0

我真的不確定你爲什麼使用RadDataBoundListBox(也許你需要虛擬化),但這裏有一些有用的成員。整個列表可以找到here

TopVisibleItem:此屬性獲取當前實現的頂級項目項目。該項目可用於查找用戶滾動的索引。所以,如果索引是25,你可能想要顯示'Scroll to top'按鈕。
BringIntoView:此方法可用於「滾動到頂部」按鈕的單擊事件。只需將索引0處的項目作爲參數傳遞即可。

希望能解決這個問題。

+0

謝謝。 但是,我應該使用TopVisibleItem? – AnaghSharma

+0

@ Code4A想到幾件事情。滾動停止。操作完成。 – akshay2000

+0

對不起,現在情況已經改變了一點。 首先,我不得不刪除ScrollViewer。見[this](http://www.telerik.com/forums/background-problem-in-databoundlistbox)。 其次,沒有什麼像索引定義的,我可以在'TopVisibleItem'中使用。 我想你可以幫助我。但現在你需要徹底瞭解問題。 謝謝 – AnaghSharma