【发布时间】:2019-01-14 00:43:13
【问题描述】:
我在 UWP 应用程序中有一个动画,它在 Windows 更新 1809 之前按预期工作(生产 Windows 应用商店应用程序)。发生了一些变化,现在动画在完成后立即重置为 From 值。
示例代码:
动画(旋转):
<Storyboard x:Key="FlipTest">
<DoubleAnimation
Storyboard.TargetName="TestRotation"
Storyboard.TargetProperty="RotationY"
From="180"
To="10"
Duration="0:0:1.40"
/>
</Storyboard>
动画项目:
<TextBlock Text="Test" FontSize="18">
<TextBlock.Projection>
<PlaneProjection x:Name="TestRotation" RotationY="0" />
</TextBlock.Projection>
</TextBlock>
从按钮点击开始调用:
private void Button_Click(object sender, RoutedEventArgs e)
{
Storyboard sb = (Storyboard)Resources["FlipTest"];
sb.Begin();
}
预期行为(适用于 Windows 1803): 当您单击按钮时,TextBlock 会旋转并保持在此状态。
Windows 1809 上的行为:
动画结束后,但在调用 Storyboard.Completed 事件之前,TextBox 重置为 From(180 度)值。
有趣的是,如果我输入To="0",它会保持这种状态。如果我设置 10、190 或 360 度,它会重置。请注意,它不会重置为原始状态(即 0 度),而是重置为 From 值(180 度)。
我还将Microsoft.NETCore.UniversalWindowsPlatform 更新到最新版本(6.1.9),但没有任何改变。
谁能解释这种行为或告诉如何解决它?我错过了什么明显的东西吗?
更新(丑陋的解决方法)
我发现我可以使用以下丑陋的 hack:
sb.Completed += (s, ee) =>
{
TestRotation.RotationY = 0.01; // ugly hack for Windows Build 1809
};
但它不仅在代码中看起来很糟糕。在屏幕上你可以看到可怕的 blink,因为在动画之后项目重置,然后再次设置为正常值。
我还注意到 RotationY 在动画完成后保持正确的值,尽管在视觉上项目旋转了。您可以在代码(完整动画)或Live Property Explorer 中看到该值为 0,而在视觉上该项目旋转到 180 度。
【问题讨论】:
-
我已将此问题报告给相关团队。他们正在调查。
-
我在 1803 和 1809 上构建时遇到了同样的问题。我已经尝试过其他版本,但我猜这是一个从裂缝中溜走的现有错误;但我相信这是一个错误。