У меня есть элемент StackPanel, на который я добавляю элементы управления HyperLinkButton, по одному для каждого элемента в возвращаемом IEnumerable. Эта StackPanel содержится в элементе Canvas.Скорость разработки для анимации шатер в Silverlight
Как только я заполнил StackPanel Я запустил анимацию, чтобы изменить свойство Canvas.Left, чтобы прокручивать гиперссылки слева направо. Мой XAML что-то вроде:
<Canvas Height="20" VerticalAlignment="Stretch" x:Name="canvasInfo">
<Canvas.Resources>
<Storyboard x:Name="storyBoardMarquee">
<DoubleAnimation x:Name="marquee" BeginTime="00:00:00" Storyboard.TargetName="spMarquee" Storyboard.TargetProperty="(Canvas.Left)" From="0"/>
</Storyboard>
</Canvas.Resources>
<StackPanel Orientation="Horizontal" x:Name="spMarquee" >
<StackPanel.Resources>
<Style TargetType="HyperlinkButton">
<Setter Property="Margin" Value="200,0,0,0"/>
</Style>
</StackPanel.Resources>
</StackPanel>
</Canvas>
Я тогда функцию, которую я называю только я заселил StackPanel с HyperLinkButtons,
//Start with element off screen to right, scroll until off left
marquee.From = canvasInfo.ActualWidth;
marquee.To = -spMarquee.ActualWidth;
Проблема, что у меня есть, что я могу 't тренировка подходящего алгоритма для продолжительности анимации. Все, что я пытаюсь сделать, непротиворечиво (например, один элемент перемещается слишком быстро, 30 элементов перемещаются слишком медленно).
У кого-нибудь есть предложения по разработке продолжительности для этой анимации, я предполагаю, что это связано с шириной StackPanel и количеством элементов, но я просто не могу получить что-либо подходящее и последовательное.
мое первое впечатление, что оно действительно с помощью StackPanel, поскольку по умолчанию это «сжатие» вокруг элементов. Пробовали ли вы использовать контейнер с фиксированным размером и, если нужно, настроить ширину, как часть анимации? –