繁体   English   中英

WPF动画的网格高度

[英]WPF Animation on Grid Height

我创建了一个简单的动画以在单击按钮时显示网格,该想法是使用窗口大小的实际高度并将动画从0更改为实际高度,但是由于用户随后将调整窗口大小,因此我想将高度从实际高度恢复为自动但是,动画完成后,无法修改grid1的高度(不仅是自动,甚至不能使用600的精确值),有人知道为什么吗? 谢谢

XAML

<Grid Name="grid_Main">
    <Grid Background="Aqua" Height="0" HorizontalAlignment="Left" Margin="68,39,0,10" Name="grid1" VerticalAlignment="Top" Width="361" >
        <ScrollViewer>
        <Border Height="200" />
        </ScrollViewer>
    </Grid>
    <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="214,258,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
</Grid>

CS

  private void button1_Click(object sender, RoutedEventArgs e)
    {
        double actualHeight = grid_Main.ActualHeight;//grid_Main.RowDefinitions[1].ActualHeight;
        DoubleAnimation animation = new DoubleAnimation(0, actualHeight, TimeSpan.FromSeconds(1));
        animation.Completed += new EventHandler(animation_Completed);
        grid1.BeginAnimation(Rectangle.HeightProperty, animation);
    }

    void animation_Completed(object sender, EventArgs e)
    {
        grid1.Height = Double.NaN;
        grid1.VerticalAlignment = System.Windows.VerticalAlignment.Stretch;
        grid1.Width = 200;
    }

您需要在animation_Completed开始时清除现有动画:

grid1.BeginAnimation(Rectangle.HeightProperty, null);

在设置动画之前,还应该养成执行此操作的习惯,以确保不会因其他动画(即使不再播放而仍绑定到该属性)的内存泄漏而结束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM