【问题标题】:Scrolling Marquee in Silverlight在 Silverlight 中滚动选取框
【发布时间】:2011-12-04 15:23:15
【问题描述】:
我需要在我的 Silverlight 应用程序中创建一个滚动选取框。选取框需要从右向左滚动。滚动完成后,它需要自动重新启动 诀窍是,我需要使用 ItemsControl,因为项目将在滚动时添加到列表中。我不知道如何做到这一点,我认为会有一个在线控件可以证明这一点。但是,我一直没有成功找到一个。有人知道现有控件或知道如何执行此操作吗?
谢谢!
【问题讨论】:
标签:
silverlight
itemscontrol
marquee
【解决方案1】:
这只是您如何构建简单选取框的想法。您必须通过 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>