tags:

views:

471

answers:

0

Hello folks,

I am applying DoubleAnimation on framework element at runtime. Here is the code snippet

foreach (FrameworkElement objInnerElement in objFrameWorkElement) {

                    Point ElementPosition = new Point(Canvas.GetLeft(objInnerElement), Canvas.GetTop(objInnerElement));

                    DoubleAnimation db = new DoubleAnimation();
                    //db.From = objMoveIn.From;


                    db.AutoReverse = objMoveIn.AutoReverse;
                    if (objMoveIn.Repeat)
                        db.RepeatBehavior = RepeatBehavior.Forever;
                    db.Duration = TimeSpan.FromSeconds(objMoveIn.AnimationDuration);
                    Storyboard story = new Storyboard();
                    if (objMoveIn.ddlDirection.SelectedIndex == 0)
                    {
                        //(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.X)
                        Storyboard.SetTargetProperty(db, new PropertyPath("(FrameworkElement.RenderTransform).(TranslateTransform.X)"));

                        //Storyboard.SetTargetProperty(db, new PropertyPath(TranslateTransform.XProperty));
                        db.From = 0 - ElementPosition.X;
                        db.To = 0;
                    }
                    else
                    {
                        Storyboard.SetTargetProperty(db, new PropertyPath("(FrameworkElement.RenderTransform).(TranslateTransform.Y)"));
                        //Storyboard.SetTargetProperty(db, new PropertyPath(TranslateTransform.YProperty));
                        db.From = 0 - ElementPosition.X;
                        db.To = 0;
                    }

                    story.Children.Add(db);

                    BeginStoryboard beginstoryboard = new BeginStoryboard();
                    beginstoryboard.Storyboard = story;
                    TranslateTransform oTransform = objInnerElement.RenderTransform as TranslateTransform;
                    if (oTransform == null)
                    {
                        oTransform = new TranslateTransform();
                        oTransform.X = 0;
                        oTransform.Y = 0;
                        objInnerElement.RenderTransform = oTransform;
                    }
                    if (objMoveIn.ddlDirection.SelectedIndex == 0)
                        oTransform.BeginAnimation(TranslateTransform.XProperty, db);
                    else
                        oTransform.BeginAnimation(TranslateTransform.YProperty, db);



                    Style objStyle = new Style();
                    EventTrigger objEventTrigger = new EventTrigger(FrameworkElement.LoadedEvent);
                    objEventTrigger.Actions.Add(beginstoryboard);
                    objStyle.Triggers.Add(objEventTrigger);
                    objInnerElement.Style = objStyle;

                }

Animation works successfully but my problem is that when I tried to generate XAML from this applied framework element

string shapestring = XamlWriter.Save(element); StringReader stringReader = new StringReader(shapestring); XmlTextReader xmlTextReader = new XmlTextReader(stringReader); Element DeepCopyobject = (Element)XamlReader.Load(xmlTextReader);

it throws error as below

{"Cannot convert string 'RenderTransform.(TranslateTransform.X)' in attribute 'TargetProperty' to object of type 'System.Windows.PropertyPath'. Property path is not valid. Cannot resolve type name 'TranslateTransform'. Error at object 'System.Windows.Media.Animation.DoubleAnimation',

Please help me..