C# Windows Phone 8的ScrollViewer事件
我有一个列表框。列表框项目可以是图像、文本、音频、视频等。这些项目是通过互联网获取的,有时列表会变得太长。我想在我的列表框中实现一个“登顶”功能,这在许多网站中都有使用。一旦用户开始滚动,就会出现一个按钮,将他们带到顶部,如果他们滚动回顶部,按钮就会消失C# Windows Phone 8的ScrollViewer事件,c#,xaml,windows-phone-8,listbox,scrollviewer,C#,Xaml,Windows Phone 8,Listbox,Scrollviewer,我有一个列表框。列表框项目可以是图像、文本、音频、视频等。这些项目是通过互联网获取的,有时列表会变得太长。我想在我的列表框中实现一个“登顶”功能,这在许多网站中都有使用。一旦用户开始滚动,就会出现一个按钮,将他们带到顶部,如果他们滚动回顶部,按钮就会消失 问题是我不知道该怎么办。如果我禁用列表框的scrollviewer并将列表框放入scrollviewer中,那么我不知道应该使用scrollviewer的哪些事件和属性?我真的不知道为什么要使用RadDataBoundListBox(也许您需要
问题是我不知道该怎么办。如果我禁用列表框的scrollviewer并将列表框放入scrollviewer中,那么我不知道应该使用scrollviewer的哪些事件和属性?我真的不知道为什么要使用
RadDataBoundListBox
(也许您需要虚拟化),但这里有一些有用的成员。可以找到完整的列表
TopVisibleItem
:此属性获取当前实现的顶级vieport项。此项可用于查找用户滚动之前的索引。因此,如果索引是25,您可能希望显示“滚动到顶部”按钮。BringIntoView
:此方法可在“滚动到顶部”按钮的单击事件中使用。只需将索引0处的项作为参数传递
希望这能解决问题。您可以使用RadDataboundListBox上的ScrollStateChanged事件查看是否正在滚动listbox。如果是,则可以显示ScrollToTop按钮 大概是这样的:
private void RadDataBoundListBox_ScrollStateChanged(object sender, ScrollStateChangedEventArgs e)
{
if (e.NewState == ScrollState.Scrolling)
{
// Code to show the ScrollToTop button
}
}
您可以使用不同的ScrollState在不同的时间显示和隐藏ScrollToTop按钮。(即,当NewState==ScrollState.TopStretch时,可以隐藏该按钮。)
如果要绑定到ListBox的ItemsSource,可以使用上面提到的BringIntoView方法
RadDataBoundListBox.BringIntoView(BoundObservableCollection[0]);
我希望这有帮助。
谢谢
约书亚谢谢。但是我应该在哪里使用TopVisibleItem?@Code4A我想到了一些事情。滚动停止。操作已完成。抱歉,现在情况有点变化。首先,我必须删除ScrollViewer。看见第二,在
TopVisibleItem
中,没有什么比索引更适合我使用的了。我想你可以帮我。但现在你需要彻底了解这个问题。谢谢你,谢谢约书亚。但是现在我没有使用RadDataBoundListBox,所以我现在会找到自己的方法(至少现在我有了实现它的想法)。你好,阿娜。