2012-11-14 45 views
0

我有一个条形图,可以设置动画的值。动画代码看起来像WPF关键帧绑定

<UserControl.Resources> 
    <Storyboard x:Key="BootUp"> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Height)" Storyboard.TargetName="MainBar"> 
      <EasingDoubleKeyFrame KeyTime="0" Value="350"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:1" Value="{Binding CurrentValue, ElementName=UserControl}"/> 
     </DoubleAnimationUsingKeyFrames> 
    </Storyboard> 
</UserControl.Resources> 

和C#

int ThisValue=200; 
public int CurrentValue 
{ 
    get { return (int)ThisValue; } 
    set { 
      ThisValue=(int)value; 
      this.MainBar.ToolTip=value.ToString(); 
      System.Windows.Media.Animation.Storyboard storyBoard = (System.Windows.Media.Animation.Storyboard)FindResource("BootUp"); 
      storyBoard.Begin(this); 
     } 

} 

我认为这应该工作,但每次都返回

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=UserControl'. BindingExpression:Path=CurrentValue; DataItem=null; target element is 'EasingDoubleKeyFrame' (HashCode=27594380); target property is 'Value' (type 'Double') 

这是怎么回事?

+0

请问您的用户控件的名称为用户控件? –

+0

是的,我试图将其更改为BarItem和对条款项目的引用,但它仍然无效。 – Bonzo

回答

2

它应该工作,如果你改变绑定找到UserControl的方式。

替换此:

Value="{Binding CurrentValue, ElementName=UserControl}" 

..with这样的:

Value="{Binding CurrentValue, RelativeSource={RelativeSource AncestorType=UserControl}} 
+1

为什么你认为这应该工作,它没有,我不知道OP如何接受这一点,动画是可冻结的对象,那里的属性不能改变,[阅读此](https://msdn.microsoft.com/ EN-US /库/ ms750509.aspx) – AymenDaoudi