【问题标题】:Completion handler for ThemeTransitionsThemeTransitions 的完成处理程序
【发布时间】:2017-06-06 12:24:26
【问题描述】:

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

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

看来我的选择是:

1) 等待Task.Delay 的时间与AddDeleteThemeTransition 所需的时间相同。看起来很hacky。

2) 尝试使用Storyboard 动画来模仿AddDeleteThemeTransition。我有这个工作,但似乎有点矫枉过正。也可以使用合成,但在我看来比情节提要动画更过分。

顺便说一句,我还没有看到任何人实现自己的Transition(即,继承自Transition 类)。在这里可能不相关,但它甚至可行吗?

【问题讨论】:

  • AddDeleteThemeTransition 类中没有属性,我们无法知道更改的值。也没有事件,好像不知道什么时候结束。

标签: c# uwp uwp-xaml


【解决方案1】:

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

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

您也无法实现自己的“Transition”,因为该类本身完全没有公开公开任何内容,但现在有了合成动画就不需要了——合成更强大。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多