天天看點

用背景代碼建立Storyboard

            string storyboardName = "MyStoryBoard";

            string myXamlElement = "MyXamlElement";

            int newLeftPosition = 120;

            Storyboard sb = XamlReader.Load(String.Format(

            @"<Storyboard xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" x:Name=""{0}"">

                <DoubleAnimation Storyboard.TargetName=""{1}""

                Storyboard.TargetProperty=""(Canvas.Left)""

                To=""{2}"" Duration=""00:00:00.1200000""/>

                </Storyboard>", storyboardName, myXamlElement, newLeftPosition)) as Storyboard;

            //Add a delegate to remove the storyboard from resources as soon as it is finished. 

            sb.Completed += new EventHandler(sb_Completed);

            //Add to the resources of the page 

            this.Resources.Add(sb);

            //Begin the storyboard which will animate the element to the correct position. 

            sb.Begin();

在不少的應用中需要動态的建立動畫作出一些複雜的效果。比如說當當拖拽元素是可以簡單的用c#代碼建立一個storyboard并在這個board中建立一個DoubleAnimation。但是用c#代碼建立動畫會導緻runtime errors因為這還是silverlight的一個bug。但是用 xaml 并load他成為一個簡單的storyboard。

xamlReader 對象有一個非常有用的Load()方法。

這裡要提醒一點  建立Storyboard一定要把屬性些完整了。 不要漏寫了類似x:Name這樣的屬性。 若夠漏寫silverlight不會報任何錯誤。在調試時是直接跳出。

我就犯了這樣的錯誤 

用背景代碼建立Storyboard