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