2013-01-23 17 views
0

我想動態,從C#,做這樣的事情:如何使用純C#中的ObjectAnimationUsingKeyFrames?

<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" 
           Storyboard.TargetName="image" 
           Storyboard.TargetProperty="(Image.Source)"> 
    <DiscreteObjectKeyFrame KeyTime="00:00:00.7000000"> 
    <DiscreteObjectKeyFrame.Value> 
     <BitmapImage UriSource="check_24.png" /> 
    </DiscreteObjectKeyFrame.Value> 
    </DiscreteObjectKeyFrame> 
</ObjectAnimationUsingKeyFrames> 

,但我想不通的C#相當於這個XAML。具體來說,我想從C#中更改Image對象中顯示的圖像。

我嘗試這樣做:

 ObjectAnimationUsingKeyFrames animation = new ObjectAnimationUsingKeyFrames(); 
     animation.BeginTime = TimeSpan.FromSeconds(0); 
     Storyboard.SetTargetName(animation, "image"); 
     Storyboard.SetTargetProperty(animation, new PropertyPath("(Image.Source)")); 
     DiscreteObjectKeyFrame keyFrame = new DiscreteObjectKeyFrame(BitmapFrame.Create(uri), TimeSpan.FromSeconds(0.7)); 
     animation.KeyFrames.Add(keyFrame); 
     myStoryboard.Children.Add(animation); 
     myStoryboard.Begin(); 

,我得到的錯誤「其它信息:沒有適用名稱領域存在解析名稱‘形象’。」

在我的XAML的控制中,x:名稱爲 「圖像」

<Image x:Name="image" ... /> 

我也試過

Storyboard.SetTargetName(動畫,image.Name);

並得到相同的錯誤。

回答

0

好的!我想出了C#的等價物。

 ObjectAnimationUsingKeyFrames animation = new ObjectAnimationUsingKeyFrames(); 
     animation.BeginTime = TimeSpan.FromSeconds(0); 
     Storyboard.SetTarget(animation, image); 
     Storyboard.SetTargetProperty(animation, new PropertyPath("(Image.Source)")); 
     DiscreteObjectKeyFrame keyFrame = new DiscreteObjectKeyFrame(BitmapFrame.Create(uri), TimeSpan.FromSeconds(0.7)); 
     animation.KeyFrames.Add(keyFrame); 
     myStoryboard.Children.Add(animation); 
     myStoryboard.Begin(); 

我用 「SetTarget」 而不是 「SetTargetName」