我有一个TextView
,如果当前控件(MainMusicInfoGrid
的MediaControl
)不够宽,无法容纳文本,则会自动滚动。文本将以循环方式滚动到结尾,然后滚动到开头。您还可以在Groove音乐中看到此效果。
我通过创建名为MediaControl
的UserControl
并使用ScrollingTextBlock来测量文本的宽度来实现此效果。如果它可以滚动,那么当我需要滚动它时,而不是滚动原始文本,新的文本(由original_text + new string('',10)+ original_text组成)将被滚动。当它停止滚动时,我将隐藏新文本。
应该以这种方式行之有效,并且过去效果很好。但是,我只注意到当前只有一个ScrollViewer
(ScrollingTextBlock
中的MainArtistTextBlock
)有效,而另一个[MediaControl
中的MainTitleTextBlock
)则无效。
[我发现了问题,在MediaControl
的timer.Tick
中,ScrollingTextBlock
已经等于ScrollingTextBlock
之前的RealScrollViewer.HorizontalOffset
,这意味着隐藏新文本不会重置offset
设置为0。我尝试在ChangeView
中手动将其重置为0,但是在RealScrollViewer.HorizontalOffset
中,该值更改回偏移量。
我不知道如何解决。谁能帮我这个?它适用于一个,但不适用于另一个,我看不出原因。