我可以用TranslateTransform
滚动文本,但当动画接近完成时,我希望它重新开始。像蛇一样:)
这是我得到的
<StackPanel Orientation="Horizontal" Margin="0,0,0,0">
<StackPanel.RenderTransform>
<TranslateTransform x:Name="transferCurreny" X="-40"/>
</StackPanel.RenderTransform>
<StackPanel.Triggers>
<EventTrigger RoutedEvent="StackPanel.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation From="0" To="-900" Duration="00:00:10"
Storyboard.TargetProperty="X"
Storyboard.TargetName="transferCurreny"
RepeatBehavior="Forever"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</StackPanel.Triggers>
<TextBlock FontSize="25" x:Name="txtKron" Margin="10,0,7,0"/>
</StackPanel>
这是我想要的
5条答案
按热度按时间eimct9ow1#
像这样的东西应该可以。
您可以在
StackPanel
上添加一个Canvas
,其中2个TextBlocks
一个设置为位置0,另一个设置为StackPanel
的ActualWidth
,然后当第一个文本块离开屏幕时,另一个文本块将进入视图。我使用
Canvas
的原因是因为Canvas
是唯一支持ClipToBounds="false"
的元素,这允许第二个TextBlock
可见,即使它被放置在Canvas
本身的边界之外如果你想从右向左滚动,我们还需要一个
IValueConverter
来获得正确的负值。我还在
SizeChanged
上添加了事件触发器,所以如果窗口大小调整,动画值将正确更新。代码:
Xaml:
结果:
**编辑:**从左到右
qqrboqgw2#
以上答案中的代码不会产生连续滚动。下面是连续平滑滚动的代码。
XAML:
VB代码后面:
uklbhaso3#
扩展answer of sa_ddam213,这是对第一个动画的修改(从右到左)。这将适用于长字符串。:)
5ktev3wc4#
为了使这适用于比元素长的字符串,并隐藏元素溢出的文本,我进一步修改了前面的答案。
要直接使用它,首先创建一个名为WpfApp1的项目
示例1:
此窗口的C#代码:
4xrmg8kj5#
下面是Leon Munir's answer.的C#版本