5
我在我的UWP应用程序中设计了一个ComboBox,我试图想出一个控件中缺少下拉动画的解决方案。UWP组合框不再有打开/关闭动画(构建14393)
看起来开放/关闭动画已被删除与周年纪念更新,我的意思是,他们仍然在设置应用程序出于某种原因,但我不再看到他们在我自己的应用程序,计算器或任何编译为Windows 10 14393.
这等UWP应用程序是什么,我在ComboBox模板看到:
<VisualStateGroup x:Name="DropDownStates">
<VisualState x:Name="Opened">
<Storyboard>
<SplitOpenThemeAnimation OpenedTargetName="PopupBorder"
ClosedTargetName="ContentPresenter"
OffsetFromCenter="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.DropDownOffset}"
OpenedLength="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.DropDownOpenedHeight}"/>
</Storyboard>
</VisualState>
<VisualState x:Name="Closed">
<Storyboard>
<SplitCloseThemeAnimation OpenedTargetName="PopupBorder"
ClosedTargetName="ContentPresenter"
OffsetFromCenter="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.DropDownOffset}"
OpenedLength="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.DropDownOpenedHeight}"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
那些SplitOpenThemeAnimation
动画并不是真正的动画,因为他们表现得像一个二传手,其效果是立竿见影的,而不是动画。
我想知道是否有一个简单的方法来恢复以前的动画(也许我只是缺少一个简单的选项/参数添加到XAML?),而不必手动混淆模板并写我自己的剪辑/转换动画,这是我不希望在这里做的事情,因为如果MS在未来的版本中再次更改模板,我会完全没有办法。
此处有任何建议吗?谢谢!
编辑︰目前这里是我使用的解决方法,但我想有东西,保持幻灯片/剪切动画做原始动画。
<VisualState x:Name="Opened">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="Popup"
Storyboard.TargetProperty="Opacity"
From="0"
To="1"
Duration="0:0:0.2">
<DoubleAnimation.EasingFunction>
<CircleEase EasingMode="EaseOut"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="PopupTransform"
Storyboard.TargetProperty="(TranslateTransform.Y)"
From="-20"
To="0"
Duration="0:0:0.2">
<DoubleAnimation.EasingFunction>
<CircleEase EasingMode="EaseOut"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
<!--Original SplitOpenAnimation here-->
</Storyboard>
您好杰里,不幸的是,这不是问题(该选项是对我来说)。正如我所说的,我在我的应用程序,其他第三方应用程序和系统应用程序(例如计算器,甚至设置应用程序)中看到了相同的行为。这是ComboBox本身的模板,随周年更新而更改(检查构建14393的generic.xaml文件)。我真的不知道为什么UI团队做出了这个选择,我只是想知道是否有更好的方法来恢复。当然,内置动画会比不用像现在这样手动重新实现它们。谢谢! – Sergio0694