默认的UWP ListView
样式在其ItemContainerTransitions
TransitionCollection
中包含一些主题转换。有没有办法知道给定主题转换的过渡动画何时完成?
例如,我有一个ListView
和一个附带按钮,可以将项目添加到列表中。我想在添加项目时禁用该按钮,因为如果另一个在进行中排队,动画将被取消。我可以根据按钮Tapped
事件轻松禁用该按钮,但我需要知道何时可以重新启用它。
似乎我的选择是:
1)等待Task.Delay
AddDeleteThemeTransition
所花费的时间。看起来非常hacky。
2)尝试使用AddDeleteThemeTransition
动画模仿Storyboard
。我有这个工作,但似乎有点矫枉过正。也可以使用合成,但在我看来,甚至比故事板动画还要过分。
顺便说一句,我没有看到有人实现自己的Transition
(即继承自Transition
类)。这可能与此无关,但它是否可行?
答案 0 :(得分:1)
如果您拥有受支持的SDK,那么使用Composition的第二个想法实际上是最好的。您想要使用的是在元素或ItemsPanel上定义的隐式动画,因为没有正确的方法可以判断动画何时结束。
ElementCompositionPreview.SetImplicitShowAnimation
和ElementCompositionPreview.SetImplicitHideAnimation
支持您可以设置用于添加/删除可视树的隐式合成动画 - 并且可以避免一个动画取消另一个动画的重叠问题,并且比使用故事板。
你也无法实现你自己的“过渡”,因为这个类本身绝对没有公开暴露任何东西,但是现在使用Composition动画没有必要 - 组合更强大。