Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 绑定到DoubleAnimation.to_Wpf_Storyboard - Fatal编程技术网

Wpf 绑定到DoubleAnimation.to

Wpf 绑定到DoubleAnimation.to,wpf,storyboard,Wpf,Storyboard,我希望将DoubleAnimation.to绑定到依赖项属性,并在该属性更改时触发动画。我可以让基本动画正常工作,但无法确定在属性更改时如何触发它 该示例显示我正在尝试为矩形的Canvas.Left属性设置动画。请注意,我已将DoubleAnimation.To绑定到位置。我希望动画运行并在位置更改时移动矩形。有人能帮我找出正确的触发器吗 <Viewbox> <Canvas Height="200" Width="200"> <Rectangle Name=

我希望将DoubleAnimation.to绑定到依赖项属性,并在该属性更改时触发动画。我可以让基本动画正常工作,但无法确定在属性更改时如何触发它

该示例显示我正在尝试为矩形的Canvas.Left属性设置动画。请注意,我已将DoubleAnimation.To绑定到位置。我希望动画运行并在位置更改时移动矩形。有人能帮我找出正确的触发器吗

<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并将其RouteEvent属性设置为Binding.TargetUpdate。此外,必须将NotifyOnTargetUpdated=True添加到绑定中(在我的情况下是位置)


        <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>