C# 如何将值绑定到动画属性?
我正在尝试在WPF中使用故事板设置路径动画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
<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
,以绑定该属性。请不要在评论中提出后续问题,因为这里的大多数观众看不到这些问题。