创建循环列表框

时间:2011-07-03 11:48:09

标签: windows-phone-7

您好我想创建一个循环列表框,以便最后一项的下一项是第一项,反之亦然 - 创建一个没有顶部或底部的列表框。

我知道WP7工具包中有一个LoopingSelector,但它不能完全按照我想要的方式进行操作,因为它会淡入/淡出外围项目,并且你有一个“选定”的项目总是在中间。

我查看了LinkedList集合但它似乎不支持循环:“LinkedList(Of T)类不支持链接,拆分,循环或其他功能可以使列表处于不一致状态。“

有没有人知道我正在寻找的解决方案,还是需要开发当前Listbox和工具包的LoopingSelector的混合?

很多人而已!

3 个答案:

答案 0 :(得分:2)

答案 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以两种方式循环。