Скроллинг шатер в Silverlight - PullRequest
3 голосов
/ 04 декабря 2011

Мне нужно создать выделение в моем приложении Silverlight.Шатер должен прокручиваться справа налево.Когда он закончил прокрутку, он должен перезапуститься автоматически. Хитрость заключается в том, что мне нужно использовать ItemsControl, поскольку элементы будут добавляться в список при прокрутке.Я понятия не имею, как это сделать, и я предполагал, что будет онлайн-контроль, который продемонстрирует это.Тем не менее, я не смог найти один.Кто-нибудь знает существующий элемент управления или знает, как это сделать?

Спасибо!

1 Ответ

0 голосов
/ 05 декабря 2011

Это единственная идея, как вы можете создать простую область выделения.Вы должны рассчитать «от» и «до» по ширине меры (ActualWidth) ItemsControl и рассчитать время продолжительности раскадровки.Вместо жестко закодированного элемента, конечно, используйте привязку.

 <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>
...