如何为 Grid RowDefinition 高度变化设置动画(当 Height="Auto" 时)

Posted

技术标签:

【中文标题】如何为 Grid RowDefinition 高度变化设置动画(当 Height="Auto" 时)【英文标题】:How to animate Grid RowDefinition Height change (when Height="Auto") 【发布时间】:2021-12-08 01:38:31 【问题描述】:

我有一个两行的 wpf 网格。第一行包含几个控件,高度设置为 Auto。第二行包含一个更改第一行控件布局的 ToggleButton。 第一行中的控件可能具有不同的高度和上边距。因此,当按下按钮时,第一行的大小会更改为某个未知值。 像这样:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="50"/>
    </Grid.RowDefinitions>

    <!--several controls in first row-->

    <ToggleButton x:Name="tb" Grid.Row="1" Content="Collapse"/>
</Grid>

我想在按下按钮时为第一行的平滑高度变化设置动画。 我读到可以通过 ObjectAnimationUsingKeyFrames 实现更改行高,但我不知道如何使用动态高度来实现。

有没有办法做这种动画?

【问题讨论】:

您应该将行的高度设置为自动,并为承载行元素的容器的高度设置动画。然后,您可以使用 DoubleAnimation。 【参考方案1】:

cmets 正确地指出了解决问题的方法。我设法通过调整内部容器的大小来制作这种动画。

【讨论】:

以上是关于如何为 Grid RowDefinition 高度变化设置动画(当 Height="Auto" 时)的主要内容,如果未能解决你的问题,请参考以下文章

如何绑定到 RowDefinition 的高度?

如何为WPF网格的整行添加上下文菜单?

wpf 如何修改 RowDefinition的高?

代码中的 WPF 自动高度

如何为 UWP 调整 Telerik UI 的 listviewitem 容器的高度

如何使用情节提要更改wpf中网格行的高度