1

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

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

我是 WPF 动画的新手,但它们对我来说似乎很简单。我不知道的是如何在不以像素为单位输入精确大小的情况下指定容器的开始和结束大小。我需要从(没有附加控件的大小)到(有附加控件的大小)制作动画,我完全不知道从哪里开始。

如何在 WPF 动画故事板中指定这样的相对大小?

4

1 回答 1

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属性,DoubleAnimation这将使动画在添加每个项目时“增长”。

于 2013-11-11T13:59:44.950 回答