<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
};
但不仅在代码中看起来很糟糕。在屏幕上,您可以看到可怕的闪烁,因为动画后该项会重置,然后再次设置为正常值。
我还注意到,在动画完成后
RotationY
保持正确的值,尽管视觉上该项已旋转。您可以在代码(在完成动画时)或Live Property Explorer
中看到该值为0,而在视觉上该项已旋转180度。