为什么动画"高度"属性不适用于Windows Universal App,其方式与"不透明度"属性相同?

Car*_*arl 3 c# animation rectangles storyboard win-universal-app

使用以下代码:

        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();
Run Code Online (Sandbox Code Playgroud)

作为FrameworkElemProperty,"Opacity"非常适用,但是当我尝试设置"Height"/"Width"属性的动画时,不适用于Rectangle.有人知道这里发生了什么吗?Microsoft Framework方面是否有任何问题,或者这需要任何魔术添加?(不透明度和高度是FrameworkElement的相同属性,因此预计它将以相同的方式运行)在Silverlight中完美地工作..

Rob*_*SFT 5

这是记录在案的行为.请参阅在MSDN上优化动画,媒体和图像.

不透明度是一种"独立动画",它不依赖于或影响其他属性或其他对象.它可以完全在组合线程上运行,并且可以高效,平稳地运行.

高度是一种"依赖动画",它会强制整体布局在更改时更新.这需要同步组合线程和UI线程,并且可能导致缓慢且低效的呈现.

默认情况下禁用相关动画,应尽可能避免.高度和宽度是文档中给出的具体示例,它们通常可以通过独立设置RenderTransform动画而不是更改布局来替换.

如果应用程序需要使用依赖动画,则可以通过将动画的EnableDependentAnimation属性设置为true并将整个Timeline.AllowDependentAnimations设置为true 来启用它们.