В настоящее время я пытаюсь создать визуальный компонент для прокрутки текста (слева направо и справа налево) - в значительной степени html-шатер.
У меня есть сетка, разделенная на несколько столбцов и строк, и я хочу поместить свой компонент в один из слотов сетки.
Сетка (с именем UIGrid) создается следующим образом:
for (int i = 0; i < xDivisions; i++)
{
ColumnDefinition newColumn = new ColumnDefinition();
UIGrid.ColumnDefinitions.Add(newColumn);
}
for (int i = 0; i < yDivisions; i++)
{
RowDefinition newRow = new RowDefinition();
UIGrid.RowDefinitions.Add(newRow);
}
Компонент, который я добавляю, — это просто граница с дочерним текстовым блоком. Я размещаю границу внутри сетки следующим образом:
border = new Border();
Grid.SetColumn(border, xPosition);
Grid.SetRow(border, yPosition);
textBlock = new TextBlock();
border.Child = textBlock;
textBlock.Text = "Scrolling text from left to right";
UIGrid.Children.Add(border);
Я использую таймер для увеличения поля текстового блока, вот упрощенное тело обратного вызова таймера:
textBlock.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
double textWidth = textBlock.DesiredSize.Width;
double visibleWidth = componentBase.ActualWidth;
double targetMargin = textWidth < visibleWidth ? visibleWidth : textWidth;
if (margin.Left == targetMargin)
{
margin.Left = -textWidth;
} else
{
margin.Left++;
}
Когда текст скользит слева направо, он ведет себя хорошо: https://s10.postimg.org/p0nt7vl09/text_good.png Текст, «выходящий» из слота сетки, скрыт.
Однако, когда я устанавливаю поле текстового блока отрицательным, чтобы он мог вернуться в видимую область слева, текст виден, даже если он находится за пределами выделенного слота: https://s10.postimg.org/pownqtjq1/text_bad.png
Вместо этого я пытался использовать заполнение, но не могу установить отрицательное заполнение. Я пробовал несколько других вещей, но я чувствую, что столкнулся с препятствием.
Что я могу сделать, чтобы получить красиво прокручиваемый текст?
ClipToBounds="True"
. Это может решить, по крайней мере, часть вашей проблемы, хотя трудно быть уверенным, поскольку вы очень скрытны. - person 15ee8f99-57ff-4f92-890c-b56153   schedule 11.08.2016