ThemeTransitions的完成处理程序

时间:2017-06-06 12:24:26

标签: c# uwp uwp-xaml

默认的UWP ListView样式在其ItemContainerTransitions TransitionCollection中包含一些主题转换。有没有办法知道给定主题转换的过渡动画何时完成?

例如,我有一个ListView和一个附带按钮,可以将项目添加到列表中。我想在添加项目时禁用该按钮,因为如果另一个在进行中排队,动画将被取消。我可以根据按钮Tapped事件轻松禁用该按钮,但我需要知道何时可以重新启用它。

似乎我的选择是:

1)等待Task.Delay AddDeleteThemeTransition所花费的时间。看起来非常h​​acky。

2)尝试使用AddDeleteThemeTransition动画模仿Storyboard。我有这个工作,但似乎有点矫枉过正。也可以使用合成,但在我看来,甚至比故事板动画还要过分。

顺便说一句,我没有看到有人实现自己的Transition(即继承自Transition类)。这可能与此无关,但它是否可行?

1 个答案:

答案 0 :(得分:1)

如果您拥有受支持的SDK,那么使用Composition的第二个想法实际上是最好的。您想要使用的是在元素或ItemsPanel上定义的隐式动画,因为没有正确的方法可以判断动画何时结束。

ElementCompositionPreview.SetImplicitShowAnimationElementCompositionPreview.SetImplicitHideAnimation支持您可以设置用于添加/删除可视树的隐式合成动画 - 并且可以避免一个动画取消另一个动画的重叠问题,并且比使用故事板。

你也无法实现你自己的“过渡”,因为这个类本身绝对没有公开暴露任何东西,但是现在使用Composition动画没有必要 - 组合更强大。