如何将值绑定到Animation属性?

时间:2014-02-12 09:56:29

标签: c# wpf

我正在尝试使用WPF中的故事板为路径设置动画。我尝试使用以下代码。

<Ellipse Name="src" Canvas.Left="50" Canvas.Top="150" Width="20" Height="30"
                        Stroke="Black" StrokeThickness="1" Fill="Red"/>
        <Path x:Name="path" StrokeDashOffset="220" StrokeDashArray="220 220" Data="M60,165 L210,210" Stroke="red" >
            <Path.Triggers>
                <EventTrigger RoutedEvent="FrameworkElement.Loaded">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation From="220" To="0" Duration="{Binding duration}" Storyboard.TargetProperty="(Shape.StrokeDashOffset)"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Path.Triggers>
        </Path>

        <Ellipse Name="dest" Canvas.Left="200" Canvas.Top="200" Width="20" Height="20"
                        Stroke="Black" StrokeThickness="1" Fill="Yellow"/>

但是这些值无法绑定到<DoubleAnimation>的属性。还有其他方法可以绑定到这些属性吗?

任何人都会帮我做这个。

1 个答案:

答案 0 :(得分:1)

首先, duration应该是属性而不是字段,如果你想绑定它。

其次,Duration DoubleAnimation的DP属于Duration类型,而不是TimeSpan。所以属性类型应该是持续时间而不是TimeSpan

财产声明应如下:

    private Duration duration = new Duration(TimeSpan.FromSeconds(50));
    public Duration Duration
    {
        get
        {
            return duration;
        }
    }

此外,根据MS属性名称约定,属性名称应为Pascal大小写。因此,我已将属性名称更新为Duration而非duration