C# 如何将值绑定到动画属性?

C# 如何将值绑定到动画属性?,c#,wpf,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="22

我正在尝试在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"/>

但是这些值不能绑定到
的属性。还有其他方法绑定到这些属性吗


任何人请帮我做这件事。

首先
持续时间
应该是一个属性,而不是字段,如果你想绑定到它

其次,
Duration
DoubleAnimation的DP属于
Duration
类型,而不是
TimeSpan
。因此属性类型应该是Duration,而不是TimeSpan

属性声明应如下所示:

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

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

Duration
属性在哪里声明?检查输出窗口中的绑定错误。这是在代码隐藏中。实际上我已经在side
中设置了DataContext。我在小样本中尝试了这一点,它对我有效。你确定装订没有破损吗?你们有并没有检查输出窗口中的绑定错误?你们是否使用了DataTemplate?若并没有,请给出代码?根据最初的问题,它在简单的xaml中不起作用(contentControl并没有提到),我在下面提供了解决方案。无论如何,不能在
ControlTemplate
中工作的原因可能是DataContext不会被传递给ControlTemplate。您需要在绑定中使用
RealtiveSource
,以绑定该属性。请不要在评论中提出后续问题,因为这里的大多数观众看不到这些问题。