UWP ComboBox 不再具有打开/关闭动画(内部版本 14393)
Posted
技术标签:
【中文标题】UWP ComboBox 不再具有打开/关闭动画(内部版本 14393)【英文标题】:UWP ComboBox no longer has open/close animations (build 14393) 【发布时间】:2017-05-24 09:40:27 【问题描述】:我在我的 UWP 应用中设计了一个 ComboBox 的样式,并且我正在尝试为控件中缺少的下拉动画想出一个解决方案。
看起来打开/关闭动画已在周年更新中删除,我的意思是,出于某种原因,它们仍在“设置”应用中播放,但我不再在我自己的应用、计算器或任何其他应用中看到它们为 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
动画并不是真正的动画,因为它们的行为就像一个setter,它们的效果是即时的,根本没有动画。
我想知道是否有一种简单的方法可以恢复以前的动画(也许我只是缺少一个简单的选项/参数来添加到 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>
【问题讨论】:
【参考方案1】:此错误通常发生在已在系统级别禁用动画的开发人员机器上。内置动画遵循此系统设置。您可以仔细检查。
【讨论】:
您好,杰瑞,不幸的是,这不是问题(该选项对我来说是打开的)。正如我所说,我在我的应用程序、其他第 3 方应用程序和系统应用程序(如计算器,甚至设置应用程序)中都看到了相同的行为。它是 ComboBox 本身的模板,它随着周年更新而改变(检查生成 14393 的 generic.xaml 文件)。老实说,我不知道 UI 团队为什么做出这个选择,我只是想知道是否有更好的方法来恢复它。当然,内置动画比像我现在做的那样手动重新实现它们要好。谢谢!以上是关于UWP ComboBox 不再具有打开/关闭动画(内部版本 14393)的主要内容,如果未能解决你的问题,请参考以下文章
关闭 UWP 应用后,具有完全信任进程的 Windows 应用程序打包项目保持运行