(Windows应用商店应用程序-Xaml/C#)设置自定义依赖项属性的动画始终需要EnableDependentAni

本文关键字:属性 依赖 动画 EnableDependentAni 自定义 设置 应用 Windows 应用程序 -Xaml | 更新日期: 2024-10-20 01:42:28

设置:在使用Xaml/C#的Windows应用商店应用程序中,我正在使用一个名为FadeLevel的具有DependencyProperty的UserControl。该属性有一个OnPropertyChanged处理程序,用于更新UserControl中UIElement的Opacity。

问题:当我尝试设置此属性的动画时,我必须将EnableDependentAnimation设置为True才能使动画工作。在这一点上,它确实起作用,而且效果很好。

我困惑的原因:不透明度不是一个需要启用从属动画的特性,只有效果布局的特性才需要此特性。

我的理由:我假设运行时不知道这个属性在做什么,并假设它是依赖的。

请启发我:它真的是这样工作的吗?如果你有自己的自定义依赖属性,那么无论底层udpate是否依赖,你都必须启用依赖动画才能对其进行动画制作?

请帮助我理解为什么运行时以这种方式工作,或者我是否遗漏了什么。

谢谢。

(Windows应用商店应用程序-Xaml/C#)设置自定义依赖项属性的动画始终需要EnableDependentAni

请参阅MSDN上Storyboarded动画文档中的"从属"answers"独立"动画中列出的标准:

如果动画具有以下任何特征,则该动画是独立的:

  • 动画的持续时间为0秒

  • 动画以UIElement为目标。不透明度

  • 动画的目标是以下UIElement属性的子属性值:RenderTransform、Projection、Clip

  • 动画以Canvas为目标。左侧或画布。顶部

  • 动画以"笔刷"值为目标,并使用SolidColorBrush为其"颜色"设置动画

  • 动画是使用KeyFrames 的ObjectAnimation

运行时不知道您的FadeLevel属性的作用,因此无法将以FadeLevel为目标的动画视为自动独立的动画。只有当自定义属性为"持续时间0"或"ObjectAnimationUsingKeyFrames"时,以自定义属性为目标的动画才会独立。