如何将GridLength从“Auto”离散动画到“*”?

5

我需要使用Storyboard来实现该属性的动画效果。 自己编写动画代码是最好的选择吗?

1个回答

9
不需要,使用标准的XAML就可以实现这个目标:
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" x:Name="col0"/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Grid.Resources>
        <Storyboard x:Key="sbCol0ToAuto">
            <ObjectAnimationUsingKeyFrames 
                BeginTime="0" Duration="0"
                Storyboard.TargetName="col0" Storyboard.TargetProperty="Width">
                <DiscreteObjectKeyFrame KeyTime="0">
                    <DiscreteObjectKeyFrame.Value>
                        <GridLength>*</GridLength>
                     </DiscreteObjectKeyFrame.Value>
                </DiscreteObjectKeyFrame>
             </ObjectAnimationUsingKeyFrames>
         </Storyboard>
    </Grid.Resources>
...
</Grid>

并且回到自动模式更加容易:

<DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static GridLength.Auto}">

1
除非它在对象/结构之间进行插值,否则这实际上不会使任何东西动画化。此外,您可以将其简写为Value="*",无需声明GridLength结构。如果您真的想要对其进行动画处理,则需要自己编写动画。 - Jeff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接