我创建了一个自定义控件,它具有一些依赖属性,我还需要将这些值分配给ControlTemplate中的故事板。
以下是我Control Template
的代码的开头:
<ControlTemplate TargetType="local:RingPresenter">
<Grid x:Name="RootGrid">
<Grid.Resources>
<Storyboard x:Key="StatisticUpdateAnnimation">
<DoubleAnimationUsingKeyFrames EnableDependentAnimation="True" Storyboard.TargetProperty="(RingSlice.EndAngle)" Storyboard.TargetName="ringSlice">
<EasingDoubleKeyFrame KeyTime="0" Value="45"/>
<EasingDoubleKeyFrame KeyTime="0:0:2.2" Value="{TemplateBinding Angle}">
重要的部分是Value={TemplateBinding Angle}"
- 该值已成功应用于我的
<helper:RingSlice InnerRadius="100" Radius="150" StartAngle="0" EndAngle="{TemplateBinding Angle}" Fill="DarkCyan" x:Name="ringSlice">
</helper:RingSlice>
... 这是我的控制模板的一部分,但在故事板中,值保持为0.调试器说Angle
具有正确的值并且工作正常对于我的Ringslice甚至元数据应该是45.
为什么这个值没有应用到我的故事板?我该如何解决这个问题?
答案 0 :(得分:0)
如有疑问,请将EndAngle="{TemplateBinding Angle}"
换成EndAngle="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Angle}"
。
TemplateBinding快速而有用,但并不总是具有最强大的能力来提供它所绑定的信息,原因完全让我失望。