您好我想创建一个循环列表框,以便最后一项的下一项是第一项,反之亦然 - 创建一个没有顶部或底部的列表框。
我知道WP7工具包中有一个LoopingSelector,但它不能完全按照我想要的方式进行操作,因为它会淡入/淡出外围项目,并且你有一个“选定”的项目总是在中间。
我查看了LinkedList集合但它似乎不支持循环:“LinkedList(Of T)类不支持链接,拆分,循环或其他功能可以使列表处于不一致状态。“
有没有人知道我正在寻找的解决方案,还是需要开发当前Listbox和工具包的LoopingSelector的混合?
很多人而已!
答案 0 :(得分:2)
看一下Petzold的article on circular lists in MSDN Magazine。
答案 1 :(得分:1)
我最近遇到了和你一样的问题!我使用混合4来处理这个问题,使我的列表在特定时间重置到某个位置,同时在原始列表的前后添加列表副本。
示例:我的列表是:1-2-3-4-5-6, 我会把它变成1-2-3-4-5-6-1-2-3-4-5-6-1-2-3-4-5-6 并且它每20秒重置到原始位置。例如:如果用户在第4项上,则会将位置重置为第4项但位于中间列表。
我目前有问题在这里问你可以查看是否有任何帮助: horizontal listbox that could be infinite circle scrolling
答案 2 :(得分:0)
使用Scrollviewer包含listbox,put manipulationCompleted事件并使用ScrolltoVerticalOffset(0)让它循环滚动。也许我的代码会有所帮助:
<ScrollViewer HorizontalScrollBarVisibility="Auto" Margin="-2,567,-1,0" x:Name="imagesScrollview"
Opacity="1" Grid.Row="1" RenderTransformOrigin="0.5,0.5"
ManipulationCompleted="imagesScrollview_ManipulationCompleted" Height="85" MouseLeftButtonDown="ScrollViewer_MouseLeftButtonDown">
<ScrollViewer.Background>
<ImageBrush ImageSource="/PhoneApp11;component/Images/top_friends_float.png" />
</ScrollViewer.Background>
<ListBox x:Name="listBox" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" Width="Auto" Height="80" Background="{x:Null}">
<ListBox.ItemTemplate>
<DataTemplate>
并且在操纵事件中:
private void imagesScrollview_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
{
ScrollViewer scrollviewer = sender as ScrollViewer;
if (scrollviewer.HorizontalOffset > (listBox.ActualWidth - 700))
scrollviewer.ScrollToHorizontalOffset(0);
else if (scrollviewer.HorizontalOffset < 100)
scrollviewer.ScrollToHorizontalOffset((listBox.ActualWidth - 487));
}
***注意:我允许我的scrollviewer以两种方式循环。