代码之家  ›  专栏  ›  技术社区  ›  M.kazem Akhgary

如何停止情节提要但保留UWP代码中的当前值?

  •  1
  • M.kazem Akhgary  · 技术社区  · 6 年前

    我的实际问题是什么?

    我想停止情节提要动画,但保留动画属性的当前值并解冻这些属性。

    我试过什么?

    我试过了 storyboard.Pause() 但这将使动画属性保持冻结状态。(更改值无效)我希望能够从情节提要中释放所有属性。

    storyboard.Stop() 不起作用,因为它将动画属性的值设置为动画的结束或开始,具体取决于 FillBehavior . 虽然它会解冻属性。

    我试着清理 storyboard.Childern 但它抛出异常,除非故事板完全停止。

    我尝试使用相同的动画制作持续时间为0的新故事板,这将停止以前的动画,并且故事板本身将在短时间内完成,但以下是问题

    • 我应该知道上一个情节提要中添加了哪些动画(我已经通过在列表中存储具有属性路径的依赖项对象解决了这个问题)

    我被最后一个卡住了,因为 this does not exist in UWP

    string propertyPath = "(UIElement.Projection).(PlaneProjection.RotationY)";
    
    // all animated properties are double
    double value = (double)dependencyObject.GetValue(???);
    

    GetValue 要求 DependencyProperty 但我有一根绳子。


    注:我只想找到一个解决我实际问题的方法(见本文顶部)。

    1 回复  |  直到 6 年前
        1
  •  0
  •   M.kazem Akhgary    6 年前

    我能够用下面的时间线解决这个问题

    new DoubleAnimation { By = 0, Duration = TimeSpan.Zero }
    

    有了这个时间轴,我就不必知道财产的价值了。在此时间线上,相同元素和相同属性路径上持续时间为0的新情节提要将停止以前的情节提要并保留其值。新的情节提要也将立即停止并解冻动画属性。