ScrollingTextBlock 不滚动
ScrollingTextBlock not scrolling
我有一个 TextView
,如果当前控件(MediaControl
的 MainMusicInfoGrid
)宽度不足以容纳文本,它会自动滚动。文本将滚动到末尾,然后以循环方式滚动到开头。您也可以在 Groove Music 中看到这种效果。
我通过创建一个名为 ScrollingTextBlock 的 UserControl
并使用 ScrollViewer
来测量文本的宽度来实现此效果。如果它可以滚动,那么当我需要滚动它时,不是滚动原始文本,而是新文本(由 original_text + new string(' ', 10) + original_text 组成)滚动。当它停止滚动时,我隐藏了新文本。
这种方式应该行得通,过去也行得通。但是,我只注意到目前只有一个 ScrollingTextBlock
(MediaControl
中的 MainArtistTextBlock
)有效,而另一个(MediaControl
中的 MainTitleTextBlock
)无效。
我发现问题了,在ScrollingTextBlock
的timer.Tick
中,RealScrollViewer.HorizontalOffset
在ChangeView
之前已经等于offset
,也就是说隐藏新文本不会将 RealScrollViewer.HorizontalOffset
重置为 0。我尝试在 StopScrolling
中将其手动重置为 0,但在 timer.Tick
中,值会变回偏移量。
我不知道如何修复它。谁能帮我这个?它对一个有效但对另一个无效,我不明白为什么。
我测试了你的代码,它运行良好,如你所知, 方法在旧版本中存在一些已知问题,请尝试将你的 OS 更新到最新版本。如果您有任何问题,请在 Windows FeedBackHub app.
中随时 post
我有一个 TextView
,如果当前控件(MediaControl
的 MainMusicInfoGrid
)宽度不足以容纳文本,它会自动滚动。文本将滚动到末尾,然后以循环方式滚动到开头。您也可以在 Groove Music 中看到这种效果。
我通过创建一个名为 ScrollingTextBlock 的 UserControl
并使用 ScrollViewer
来测量文本的宽度来实现此效果。如果它可以滚动,那么当我需要滚动它时,不是滚动原始文本,而是新文本(由 original_text + new string(' ', 10) + original_text 组成)滚动。当它停止滚动时,我隐藏了新文本。
这种方式应该行得通,过去也行得通。但是,我只注意到目前只有一个 ScrollingTextBlock
(MediaControl
中的 MainArtistTextBlock
)有效,而另一个(MediaControl
中的 MainTitleTextBlock
)无效。
我发现问题了,在ScrollingTextBlock
的timer.Tick
中,RealScrollViewer.HorizontalOffset
在ChangeView
之前已经等于offset
,也就是说隐藏新文本不会将 RealScrollViewer.HorizontalOffset
重置为 0。我尝试在 StopScrolling
中将其手动重置为 0,但在 timer.Tick
中,值会变回偏移量。
我不知道如何修复它。谁能帮我这个?它对一个有效但对另一个无效,我不明白为什么。
我测试了你的代码,它运行良好,如你所知,