列表框循环列表和WPF中的自动轮换

时间:2013-07-11 19:02:16

标签: wpf animation listbox rotation

我有一组元素,我在列表框中正确显示。我想为列表设置动画,使其显示为电影结束时的滚动信用。此外,我想使列表循环,以便当最后一个项目在列表框的可见部分滚动时,它显示下一个第一个项目。坦率地说,我不知道从哪里开始。

感谢您的帮助和关注。

1 个答案:

答案 0 :(得分:1)

您可以使用动画。

XAML:

<Canvas Name="_canvas">
    <ListBox Name="_listBox" Loaded="OnListBoxLoaded" BorderBrush="Transparent">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Border BorderBrush="Blue" BorderThickness="2" CornerRadius="10" Margin="5, 20, 5, 0">
                    <TextBlock Text="{Binding}" Margin="10" />
                </Border>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Canvas>

代码背后:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        _listBox.ItemsSource = new List<string>() { "FFF", "EEE", "DDD", "CCC", "BBB", "AAA" }; ;
    }

    private void OnListBoxLoaded(object sender, RoutedEventArgs e)
    {
        DoubleAnimation doubleAnimation = new DoubleAnimation();   
        doubleAnimation.From = -(sender as FrameworkElement).ActualHeight;
        doubleAnimation.To = _marqueeHeight;   
        doubleAnimation.RepeatBehavior = RepeatBehavior.Forever;   
        doubleAnimation.Duration = new Duration(TimeSpan.Parse("0:0:10"));   
        _listBox.BeginAnimation(Canvas.TopProperty, doubleAnimation);

        _canvas.Clip = new RectangleGeometry(new Rect(0, 0, _canvas.ActualWidth, _marqueeHeight));
    }

    private double _marqueeHeight = 100;
}