WPF滚动动画

时间:2013-11-11 13:18:11

标签: wpf animation controls

我想在WPF中创建一个容器,它将显示可变数量的项目。这些项目将通过DependencyProperty集合附加到容器中。

只要未设置项目,我想显示该容器已展开。然后,当设置项目时,我想动画将容器滚动到大小,当所有项目都可用时。

我是WPF动画的新手,但对我来说它们看起来很简单。我不知道的是如何指定容器的开始和结束大小而不输入精确的像素大小。我需要动画(没有额外控件的大小)到(带有附加控件的大小),我完全不知道,从哪里开始。

如何在WPF动画故事板中指定此类相对大小?

1 个答案:

答案 0 :(得分:1)

您可以使用ActualHeight属性执行此类操作:

<Grid Name="LayoutRoot">
    <Grid Name="Container" ClipToBounds="True">
        <ListBox ItemsSource="{Binding YourCollection}" ... >
            <ListBox.Triggers>
                <EventTrigger RoutedEvent="ListBox.SizeChanged">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetName="Container" 
Storyboard.TargetProperty="Height" To="{Binding ActualHeight, ElementName=LayoutRoot, 
FallbackValue=0, Mode=OneWay}" Duration="00:00:0.3" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </ListBox.Triggers>
        </ListBox>
    </Grid>
</Grid>

请注意,我没有使用From的{​​{1}}属性...这样可以在添加每个项目时让动画“增长”。