平滑滚动垂直文本以进行处理

时间:2012-01-24 14:59:30

标签: c# wpf textbox scroll smooth-scrolling

我需要创建一个控件,在闪屏上显示文本进度(例如,将显示加载的各种模块和启动状态)。我希望控件只显示最后3或4行,这样新文本将以平滑的动画方式推送上一个文本。

我是否应该将TextBox控件用于此控件或其他控件?如果有人能够指出我正确的方向,那将是伟大的。

2 个答案:

答案 0 :(得分:0)

使用ListBox,您的文字为ListBoxItem以及自定义动画Panel,您可以轻松实现此效果。简而言之,PanelTransform个对象添加到每个项目的RenderTransform属性中,这样您就可以将项目移动设置为其位置的动画。

查看非常好article以了解如何创建动画Panel ...当然,您必须编写自定义代码以按照您想要的方式排列项目。获得自定义Panel后,您可以在ListBox中使用它(假设您已包含对Panel所在的命名空间的引用),如下所示:

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

答案 1 :(得分:0)

只是一个想法,但是你说你想让它一次滚动一行,因为添加了另一行。如何使用ScrollViewer.LineUp?我知道这非常粗糙,但作为一个想法......

private void ScrollBox()
{
    foreach (string line in lines)
    {
        scrollbox.LineUp();
        textbox.Text += "/r/n Next Line";
    }
}