2

这有点难以描述,但我会尽力而为。
我有一个控件,它有一个图像和一个标签,它需要有 2 个状态(“大”和“小”)。

在“大”状态下,图像应该在控件的顶部居中,标签应该在下方居中(就像一个带有图像和一个停靠在顶部的标签的停靠栏)。

在“小”状态下,图像应该更小并且在控件的左上角,并且标签应该在它旁边。

大状态应该是这样的:

大国

还有小状态:

小国

棘手的部分是:当我在它们之间切换时,我需要它动画超过 0.3 秒。
我发现没有适合此的面板。

DockPanel对这两种状态都是一个很好的解决方案,但它不能为它设置动画。
Canvas可以对其进行动画处理,但没有适当的布局(不能如此轻松地将它们居中)。

最好的方法是什么?

4

1 回答 1

0

在 WPF 中没有动画对齐,唯一能出现的就是它ThicknessAnimation。但是您可以使用DiscreteObjectKeyFrame来设置对齐方式。下面是一个简单的演示,可以在其中Label设置:VerticalAlignmentBottom

<Grid>
    <Grid.Triggers>
        <EventTrigger SourceName="Small" RoutedEvent="Button.Click">
            <BeginStoryboard>
                <Storyboard>                        
                    <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="Test" Storyboard.TargetProperty="VerticalAlignment">
                        <DiscreteObjectKeyFrame KeyTime="0:0:0">
                            <DiscreteObjectKeyFrame.Value>
                                <VerticalAlignment>Bottom</VerticalAlignment>
                            </DiscreteObjectKeyFrame.Value>
                        </DiscreteObjectKeyFrame>
                    </ObjectAnimationUsingKeyFrames>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Grid.Triggers>

    <Label x:Name="Test" Content="Test" Width="300" Height="300" Background="Aqua" VerticalAlignment="Top" HorizontalAlignment="Center" />

    <Button Name="Small" Content="Small" Width="100" Height="30" HorizontalAlignment="Right" VerticalAlignment="Top" />
</Grid>

将它与标准动画结合使用,例如DoubleAnimation,我认为您将能够实现此目标。

于 2013-07-27T13:52:40.183 回答