ScrollingTextBlock 不滚动

ScrollingTextBlock not scrolling

我有一个 TextView,如果当前控件(MediaControlMainMusicInfoGrid)宽度不足以容纳文本,它会自动滚动。文本将滚动到末尾,然后以循环方式滚动到开头。您也可以在 Groove Music 中看到这种效果。

我通过创建一个名为 ScrollingTextBlockUserControl 并使用 ScrollViewer 来测量文本的宽度来实现此效果。如果它可以滚动,那么当我需要滚动它时,不是滚动原始文本,而是新文本(由 original_text + new string(' ', 10) + original_text 组成)滚动。当它停止滚动时,我隐藏了新文本。

这种方式应该行得通,过去也行得通。但是,我只注意到目前只有一个 ScrollingTextBlockMediaControl 中的 MainArtistTextBlock)有效,而另一个(MediaControl 中的 MainTitleTextBlock)无效。

我发现问题了,在ScrollingTextBlocktimer.Tick中,RealScrollViewer.HorizontalOffsetChangeView之前已经等于offset,也就是说隐藏新文本不会将 RealScrollViewer.HorizontalOffset 重置为 0。我尝试在 StopScrolling 中将其手动重置为 0,但在 timer.Tick 中,值会变回偏移量。

我不知道如何修复它。谁能帮我这个?它对一个有效但对另一个无效,我不明白为什么。

我测试了你的代码,它运行良好,如你所知, 方法在旧版本中存在一些已知问题,请尝试将你的 OS 更新到最新版本。如果您有任何问题,请在 Windows FeedBackHub app.

中随时 post