我想要一个固定宽度TextBlock
的,有长的、完整的、水平的文本,并且正在寻找一种好的方法来允许用户阅读所有文本。我想要一些更复杂的东西,而不仅仅是将控件放在ScrollViewer
.
第一个(理想的)选项是能够将鼠标悬停在鼠标上方TextBlock
,例如,如果鼠标位于中心的右侧,它将向右滚动(速度越快,您从中心移动得越远)。我想这是可行的,通过处理 TextBlock 上的 MouseEnter / MouseOver 事件,确定光标在 TextBlock 内的位置,并适当地启用一些选取框/动画。我正在寻找如何做到这一点的方法,特别是因为我对 WPF 中的动画几乎没有经验。想自己弄清楚细节,但很难开始。
第二个选项是在文本的任一侧都有一个RepeatButton
,当你将鼠标悬停在它上面时,它会滚动文本。
初步尝试:
<RepeatButton ClickMode="Hover"
Command="{x:Static ComponentCommands.MoveLeft}"
CommandTarget="{Binding ElementName=TextAutoScroller}"
Content="Go left" />
<ScrollViewer x:Name="TextAutoScroller" Grid.Column="1"
VerticalScrollBarVisibility="Disabled"
HorizontalScrollBarVisibility="Hidden">
<TextBlock VerticalAlignment="Center"
Text="The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog." />
</ScrollViewer>
<RepeatButton Grid.Column="2"
ClickMode="Hover"
Command="{x:Static ComponentCommands.ScrollPageRight}"
CommandTarget="{Binding ElementName=TextAutoScroller}"
Content="Go right" />
这样做的问题是两个RepeatButton
控件都被禁用 - 似乎既不支持MoveLeft
也不ScrollPageRight
支持,但是ScollPageDown
(对我的水平场景没有好处)可以吗?
任何关于任一选项的提示或建议将不胜感激!