UWP TextBlock无限滚动定时器(c# xaml)
本文关键字:xaml 定时器 TextBlock 无限 滚动 UWP | 更新日期: 2023-09-27 18:04:00
我正在c#和xaml的UWP应用程序上工作,我想显示一个无限连续的文本滚动(相同的文本连续滚动,没有任何空白)。
我首先尝试在滚动查看器中嵌入一个文本块,但是当文本通过网格时,它又从一开始开始,所以有一个空白。
所以我尝试并成功地滚动了一个带有计时器的textBlock,但现在它是一样的:当文本滚动时,它从开始开始,而我想使它连续(如电视新闻)。
我认为我需要的是2个textBlock一个跟着另一个?
这是我的xaml代码(带计时器)
<TextBlock Name="SongTextBlock"
Foreground="White" FontSize="20px"
Text=" "
TextWrapping="NoWrap"
Loaded="scrollText_Loaded"
Unloaded="scrollText_Unloaded" />
和c#
private void scrollText_Loaded(object sender, RoutedEventArgs e)
{
//on récupère la largeur du conteneur principal de notre appli
double mainGridWidth = MainGrid.ActualWidth;
//on initialise la position du textBlock (en dehors de la page)
SongTextBlock.Margin = new Thickness(mainGridWidth, 0, 0, 0);
timer.Tick += (ss, ee) =>
{
if (timer.Interval.Ticks == 300)
{
SongTextBlock.Margin = new Thickness(SongTextBlock.Margin.Left - 5, 0, 0, 0);
if (SongTextBlock.Margin.Left <= -mainGridWidth) SongTextBlock.Margin = new Thickness(mainGridWidth, 0, 0, 0);
}
};
timer.Interval = new TimeSpan(300);
timer.Start();
}
private void scrollText_Unloaded(object sender, RoutedEventArgs e)
{
timer.Stop();
}
你需要的是把你的TextBlock
放在ScrollViewer
里面,所以当时间滴答时,文本可以滚动。
你可以参考我的另一个案例:c# UWP自动滚动文本,在那里我为这个可滚动文本写了一个演示。
这里是另一个关于修改ScrollViewer
和TextBlock
的布局的例子,这样它看起来就像一个整体:TextBox的大小在ScrollView中与水平滚动。