我需要创建一个控件,在闪屏上显示文本进度(例如,将显示加载的各种模块和启动状态)。我希望控件只显示最后3或4行,这样新文本将以平滑的动画方式推送上一个文本。
我是否应该将TextBox控件用于此控件或其他控件?如果有人能够指出我正确的方向,那将是伟大的。
答案 0 :(得分:0)
使用ListBox
,您的文字为ListBoxItem
以及自定义动画Panel
,您可以轻松实现此效果。简而言之,Panel
将Transform
个对象添加到每个项目的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";
}
}