2017-01-10 54 views
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> 

回答

0

这个错误通常发生在那些对系统级禁用动画开发的机器。内置的动画服从这个系统设置。你可以仔细检查。

enter image description here

+0

您好杰里,不幸的是,这不是问题(该选项是对我来说)。正如我所说的,我在我的应用程序,其他第三方应用程序和系统应用程序(例如计算器,甚至设置应用程序)中看到了相同的行为。这是ComboBox本身的模板,随周年更新而更改(检查构建14393的generic.xaml文件)。我真的不知道为什么UI团队做出了这个选择,我只是想知道是否有更好的方法来恢复。当然,内置动画会比不用像现在这样手动重新实现它们。谢谢! – Sergio0694