HyperLinkButton コントロールを追加する StackPanel 要素があり、return IEnumerable の要素ごとに 1 つです。この StackPanel は、Canvas 要素内に含まれています。
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 に HyperLinkButton を設定した後に呼び出す関数を用意します。
//Start with element off screen to right, scroll until off left
marquee.From = canvasInfo.ActualWidth;
marquee.To = -spMarquee.ActualWidth;
私が抱えている問題は、アニメーションの持続時間に適したアルゴリズムをワークアウトできないことです。何を試しても一貫性がありません (たとえば、1 つの要素の動きが速すぎる、30 の要素の動きが遅すぎるなど)。
このアニメーションの期間を計算するための提案はありますか?それは StackPanel の幅と要素の数に関係していると思いますが、適切で一貫したものを得ることができません。