我希望将 DoubleAnimation.To 绑定(bind)到依赖属性,并在该属性更改时触发动画。我可以让基本动画正常工作,但无法弄清楚如何在属性更改时触发它。
该示例显示我尝试为 Rectangle 的 Canvas.Left 属性设置动画。请注意,我已将 DoubleAnimation.To 绑定(bind)到 Position。我希望动画在位置更改时运行并移动我的矩形。有人可以帮我找出正确的触发器吗?
<Viewbox>
<Canvas Height="200" Width="200">
<Rectangle Name="MyRectangle" Canvas.Left="50" Canvas.Top="50" Width="100" Height="100" Fill="Blue">
<Rectangle.Triggers>
<EventTrigger RoutedEvent="Rectangle.Loaded">
<BeginStoryboard>
<Storyboard Name="MyStoryboard">
<DoubleAnimation Storyboard.TargetName="MyRectangle"
Storyboard.TargetProperty="(Canvas.Left)"
To="{Binding Position}" Duration="0:0:5" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Rectangle.Triggers>
</Rectangle>
</Canvas>
最佳答案
答案是使用 EventTrigger 并将其 RoutedEvent 属性设置为 Binding.TargetUpdated。另外,您必须将 NotifyOnTargetUpdated=True 添加到您的绑定(bind)中(在我的例子中为“位置”)。
<Viewbox>
<Canvas Height="200" Width="200">
<Rectangle Name="MyRectangle" Canvas.Left="50" Canvas.Top="50" Width="100" Height="100" Fill="Blue">
<Rectangle.Triggers>
<EventTrigger RoutedEvent="Binding.TargetUpdated">
<BeginStoryboard>
<Storyboard Name="MyStoryboard">
<DoubleAnimation Storyboard.TargetName="MyRectangle"
Storyboard.TargetProperty="(Canvas.Left)"
To="{Binding Position, NotifyOnTargetUpdated=True}" Duration="0:0:5" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Rectangle.Triggers>
</Rectangle>
</Canvas>
</Viewbox>
关于wpf - 绑定(bind)到 DoubleAnimation.To,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30361056/