我想将文本块从屏幕的左端移到另一端。我已经做了如下。它从右端向左滑动。但是对于冗长的文本,它不会显示所有文本。我该如何解决?
<Grid>
<Canvas Grid.Row="0" Background="Blue">
<Canvas.Clip>
<RectangleGeometry Rect="0, 0, 2000, 800" />
</Canvas.Clip>
<TextBlock Name="txtScrollingNotification" Foreground="White"
Text="aaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggg hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkklllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnoooooooooooooooooooooooooooooooooooooopppppppppppppppppppppppppp" Canvas.Top="6" />
</Canvas>
<Grid.Resources>
<Storyboard x:Name="Storyboard1">
<DoubleAnimation
Storyboard.TargetName="txtScrollingNotification"
Storyboard.TargetProperty="(Canvas.Left)"
Duration="0:0:10" From="2000"
To="0"
RepeatBehavior="Forever" />
</Storyboard>
</Grid.Resources>
</Grid>
答案 0 :(得分:0)
您可以在动画之前看到所有文本吗?可能是您的元素不够宽,无法显示所有文本。
如果在文本框中添加自动换行,则文本将自动换行到元素的末尾,以便您可以看到这些尺寸
<TextBlock
Name="txtScrollingNotification"
Foreground="White"
Width="2000"
TextWrapping="Wrap"
Text="long text"
Canvas.Top="6" />
答案 1 :(得分:0)
通过编程设置DoubleAnimation的From和To值解决了该问题
private void LoadScrollingTextBlock()
{
Storyboard sb = new Storyboard();
DoubleAnimation doubleAnimation = new DoubleAnimation();
doubleAnimation.From = this.ActualWidth;
doubleAnimation.To = -txtScrollingNotification.ActualWidth;
doubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
doubleAnimation.Duration = new Duration(TimeSpan.FromSeconds(55)); // provide an appropriate duration
//marquee.(Canvas.LeftProperty, doubleAnimation);
Storyboard.SetTarget(doubleAnimation, txtScrollingNotification);
Windows.UI.Xaml.Media.Animation.Storyboard.SetTargetProperty(doubleAnimation, "(Canvas.Left)");
sb.Children.Add(doubleAnimation);
sb.Begin();
}