我有一个简单的WPF应用程序,其中包含一个用户控件,该控件由主窗口上的一对故事板进行动画制作。我正在设置用户控件的不透明度,scaletransform.scalex和scaletransform.scaley,以将其弹出视图。除了第一次运行外,它看起来很酷。动画设置为3/10秒,但我在测试期间增加了这个。我已经尝试在几分之一秒内设置默认值,以查看是否存在我正在动画的属性值未按预期进行默认的问题。那什么都没做。我甚至在加载的窗口上显式调用我的“隐藏”动画,看看这是否有助于我设置我的默认值,但这也不起作用。运行时第一次触发动画时是否有一些初始化?有没有一种方法可以在显示UI之前显式调用这种初始化?症状是控件甚至在第一个动画中大约2/10秒后才可见。有时它会更长,并且控件在完全动画后显示出来(不透明度和大小是最终显示时的最终值)。
答案 0 :(得分:1)
听起来你正好在动画之前设置UserControl的DataContext。据推测,您正在进行绑定,即创建可视对象并在动画应该启动的同时将它们添加到可视树中。这需要动画争夺的处理。避免这种情况的方法是将控件实例化(使用DataContext设置),但隐藏,因此不需要在动画时执行可视对象创建。 (通过我的同事蒂姆李)