Я хочу иметь фиксированную ширину TextBlock
с длинным непрерывным горизонтальным текстом, и я ищу хороший подход, позволяющий пользователю читать весь текст.Я хочу что-то более сложное, чем просто поместить элемент управления в ScrollViewer
.
Первый (идеальный) вариант - это возможность навести курсор мыши на TextBlock
и, если мышьнапример, справа от центра, он будет прокручиваться вправо (с увеличением скорости, чем дальше вы двигаетесь от центра).Я предполагаю, что это выполнимо, обрабатывая события MouseEnter / MouseOver в TextBlock, выясняя, где находится курсор внутри 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
(не подходит для моего горизонтального сценария) работает нормально?
Буду признателен за любые советы или предложения по любому из вариантов!