为什么动画&;height &;属性在Windows通用应用程序中不起作用,就像“不透明度”一样.财产

本文关键字:不透明度 不起作用 就像 财产 一样 属性 height 动画 Windows 为什么 应用程序 | 更新日期: 2023-09-27 18:19:09

使用以下代码:

        Storyboard storyBoard = new Storyboard();
        DoubleAnimation doubleAnimation = new DoubleAnimation();
        doubleAnimation.From = From;
        doubleAnimation.To = To;
        doubleAnimation.Duration = new Duration(new TimeSpan(0, 0, 0, seconds, miliseconds));
        Storyboard.SetTarget(doubleAnimation, Target);
        Storyboard.SetTargetProperty(doubleAnimation, FrameworkElemProperty);
        storyBoard.Children.Add(doubleAnimation);
        storyBoard.Completed += storyBoard_Completed;
        storyBoard.Begin();

对于"不透明度"作为FrameworkElemProperty工作得很好,但在矩形的情况下不起作用,当我试图动画"高度"/"宽度"属性时。有人知道这是怎么回事吗?在微软框架方面是否有任何问题,或者这需要任何神奇的添加?(不透明度和高度是FrameworkElement的相同属性,因此预计这将以相同的方式表现)在Silverlight中工作完美…

为什么动画&;height &;属性在Windows通用应用程序中不起作用,就像“不透明度”一样.财产

这是记录在案的行为。参见在MSDN上优化动画、媒体和图像。

不透明度是一个"独立动画",它不依赖或影响其他属性或其他对象。它可以完全运行在合成线程上,运行高效、平稳。

Height是一个"依赖动画",它将在改变时强制整体布局更新。这需要同步合成线程和UI线程,并可能导致缓慢和低效的呈现。

依赖动画在默认情况下是禁用的,应该尽可能避免使用。高度和宽度是文档中给出的具体示例,它们通常可以通过独立地激活RenderTransform而不是改变布局来替换。

如果一个应用需要使用依赖动画,那么它可以通过设置动画的EnableDependentAnimation属性为true和整个时间轴来启用它们。AllowDependentAnimations为true

你可以改变高度值,但你不能动画它,我不是为这个设计的。如果你想要一个具有高度的动画,你应该考虑动画 scaletransform。写入ScaleY

<[YourFrameworkElement].RenderTransform>
  <ScaleTransform x:Name="Target" ScaleX="1.0" ScaleY="1.5"/>
</[YourFrameworkElement].RenderTransform>