2014-07-01 131 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