Плавная прокрутка вертикального текста для прогресса - PullRequest
3 голосов
/ 24 января 2012

Мне нужно создать элемент управления, который будет отображать ход выполнения текста на заставке (например, отображать загруженные различные модули и состояние запуска).Мне бы хотелось, чтобы элемент управления отображал только последние 3 или 4 строки, чтобы новый текст плавно анимировал предыдущий текст.

Должен ли я использовать элемент управления TextBox для этого или другого элемента управления?Если кто-то сможет указать мне правильное направление, это будет здорово.

Ответы [ 2 ]

0 голосов
/ 24 марта 2012

Просто мысль, но вы сказали, что хотите, чтобы она прокручивалась по одной строке за раз, когда добавляется другая строка. Как насчет использования ScrollViewer.LineUp? Я знаю это чрезвычайно грубо, но как идея ...

private void ScrollBox()
{
    foreach (string line in lines)
    {
        scrollbox.LineUp();
        textbox.Text += "/r/n Next Line";
    }
}
0 голосов
/ 07 февраля 2012

Вы можете легко получить этот эффект с ListBox, вашим текстом как ListBoxItem с и анимированным Panel. Короче говоря, Panel добавляет Transform объекты к свойству RenderTransform каждого элемента, что позволяет вам анимировать перемещение элементов на их позиции.

См. Эту очень хорошую статью , чтобы узнать, как создать анимированный Panel ... конечно, вам придется написать свой собственный код, чтобы расположить элементы так, как вы хотите. Если у вас есть пользовательский Panel, вы можете использовать его в ListBox (при условии, что вы включили ссылку на пространство имен, в котором находится Panel), например:

<ListBox HorizontalContentAlignment="Stretch" 
    ScrollViewer.HorizontalScrollBarVisibility="Disabled">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <YourXmlns:YourAnimatedStackPanelPanel />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>
...