2017-01-10 7 views
5

Я устраиваю ComboBox в своем приложении UWP, и я пытаюсь найти решение для отсутствующих анимаций выпадающего списка в элементе управления.UWP ComboBox больше не имеет анимации open/close (сборка 14393)

Похоже, что анимация open/close была удалена с обновлением Anniversary Update, я имею в виду, что они по-прежнему играются в приложении «Настройки» по какой-то причине, но я больше не вижу их как в своем приложении, так и в Калькуляторе или любом другие UWP приложение компилируется для Windows 10 14393.

Это то, что я вижу в шаблоне 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?) Без необходимости вручную связываться с шаблоном и писать собственный клип/transform, что я бы предпочел не делать здесь, так как MS изменит шаблон снова в будущей сборке, я бы сделал все зря.

Любые предложения здесь? Благодаря!

EDIT: на данный момент это обходной путь, который я использую, но я хотел бы иметь что-то, что сохраняет анимацию слайда/обрезки, как это сделала оригинальная анимация.

<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, который был изменен с помощью обновления Anniversary Update (проверьте файл generic.xaml для сборки 14393). Я честно не знаю, почему команда пользовательского интерфейса сделала этот выбор, и мне просто интересно, есть ли лучший способ вернуть это. Конечно, хотя встроенные анимации были бы лучше, чем вручную переопределять их, как я делаю сейчас. Благодаря! – Sergio0694