我有一个控件的故事板动画可以向上和向下缩放,我想在故事板中缩放值更改时获得一个propertychanged回调。
<Storyboard x:Name="ScaleLoop" RepeatBehavior="Forever">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="ScalingObject" EnableDependentAnimation="True">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="1"/>
<EasingDoubleKeyFrame KeyTime="0:0:2" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
上面的动画很简单,但将来我打算制作一个更复杂的动画。
<Canvas x:Name="ScalingObject">
<Canvas.RenderTransform>
<CompositeTransform ScaleY="1"/>
</Canvas.RenderTransform>
</Canvas>
这是我正在使用的回调:
long handle = this.ScalingObject.RegisterPropertyChangedCallback(Canvas.RenderTransformProperty, new DependencyPropertyChangedCallback(this.ChangeState));
但这只会被解雇一次。
这是最好的方法吗?
任何帮助都会很棒。
谢谢, 乙
答案 0 :(得分:0)
似乎Canvas.RenderTransformProperty
无法触发事件。
您应该能够使用CompositeTransform.ScaleYProperty
设置为RegisterPropertyChangedCallback
方法。更改CompositeTransform.ScaleYProperty
的值时,将触发ChangeState事件。
例如:
var compositeTransform = (CompositeTransform)ScalingObject.RenderTransform;
long handle = compositeTransform.RegisterPropertyChangedCallback(CompositeTransform.ScaleYProperty, new DependencyPropertyChangedCallback(this.ChangeState));