在Silverlight中滚动字幕

时间:2011-12-04 15:23:16

标签: silverlight itemscontrol marquee

我需要在Silverlight应用程序中创建一个滚动字幕。选框需要从右向左滚动。当它完成滚动时,它需要自动重启诀窍是,我需要使用ItemsControl,因为项目将在滚动时添加到列表中。我不知道如何做到这一点,我认为会有一个在线控件来证明这一点。但是,我找不到一个是不成功的。有人知道现有控件还是知道怎么做?

谢谢!

1 个答案:

答案 0 :(得分:0)

这只是想法如何构建简单的选框。您必须通过测量ItemsControl的宽度(ActualWidth)来计算“从”和“到”,并计算故事板持续时间。 而不是硬编码的项目当然使用绑定。

 <ScrollViewer Width="Auto"
              Height="Auto"
              BorderThickness="0"
              HorizontalContentAlignment="Stretch"
              VerticalContentAlignment="Stretch"
              VerticalScrollBarVisibility="Disabled"
              Margin="0"
              Padding="0">
                <Canvas>
                    <Canvas.Resources>
                        <Storyboard x:Name="Anim">
                            <DoubleAnimation From="480" To="-480" Storyboard.TargetName="Marquee"
                                             Duration="0:0:10"
                                             RepeatBehavior="Forever"
                                             Storyboard.TargetProperty="(Canvas.Left)"/>
                        </Storyboard>
                    </Canvas.Resources>
                    <ItemsControl Canvas.Left="0" Name="Marquee">
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <StackPanel Orientation="Horizontal"/>
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>
                        <ItemsControl.Items>
                            <TextBlock Text="Item1" Margin="10 0 0 0"/>
                            <TextBlock Text="Item2" Margin="10 0 0 0"/>
                            <TextBlock Text="Item3" Margin="10 0 0 0"/>
                            <TextBlock Text="Item4" Margin="10 0 0 0"/>
                        </ItemsControl.Items>
                    </ItemsControl>
                </Canvas>
  </ScrollViewer>