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();
}

UWP TextBlock无限滚动定时器(c# xaml)

你需要的是把你的TextBlock放在ScrollViewer里面,所以当时间滴答时,文本可以滚动。

你可以参考我的另一个案例:c# UWP自动滚动文本,在那里我为这个可滚动文本写了一个演示。

这里是另一个关于修改ScrollViewerTextBlock的布局的例子,这样它看起来就像一个整体:TextBox的大小在ScrollView中与水平滚动。