protected Storyboard ClonePlaceholderItems(AnimationPlaceholder placeholder, FrameworkElement destinationElement)
        {
            if (placeholder.Triggers.Count == 0)
            {
                return(null);
            }
            var orgTrigger = placeholder.Triggers[0] as EventTrigger;

            if (orgTrigger == null)
            {
                return(null);
            }
            var orgBeginStoryboard = orgTrigger.Actions[0] as BeginStoryboard;

            if (orgBeginStoryboard == null)
            {
                return(null);
            }
            var orgStoryboard = orgBeginStoryboard.Storyboard;

            destinationElement.RenderTransformOrigin = placeholder.RenderTransformOrigin;
            destinationElement.RenderTransform       = placeholder.RenderTransform.Clone();
            destinationElement.LayoutTransform       = placeholder.LayoutTransform.Clone();
            var storyboard = new Storyboard();

            foreach (var ani in orgStoryboard.Children)
            {
                var newAnimation = ani.Clone();
                storyboard.Children.Add(newAnimation);
                newAnimation.SetValue(Storyboard.TargetProperty, destinationElement);
            }
            var trigger = new EventTrigger(orgTrigger.RoutedEvent);

            trigger.Actions.Add(new BeginStoryboard()
            {
                Storyboard = storyboard
            });
            destinationElement.Triggers.Add(trigger);
            this.OnStoryboardPrepared(storyboard);
            return(storyboard);
        }
Exemple #2
0
        internal static Storyboard ClonePlaceholderItems(AnimationPlaceholder placeholder, FrameworkElement destinationElement, out RoutedEvent routedEvent)
        {
            routedEvent = null;
            var orgTransformOrigin = placeholder.RenderTransformOrigin;
            var orgTransform       = placeholder.RenderTransform;

            if (placeholder.Triggers.Count == 0)
            {
                return(null);
            }
            var orgTrigger = placeholder.Triggers[0] as EventTrigger;

            if (orgTrigger == null)
            {
                return(null);
            }
            routedEvent = orgTrigger.RoutedEvent;
            var orgBeginStoryboard = orgTrigger.Actions[0] as BeginStoryboard;

            if (orgBeginStoryboard == null)
            {
                return(null);
            }
            var orgStoryboard = orgBeginStoryboard.Storyboard;

            destinationElement.RenderTransformOrigin = placeholder.RenderTransformOrigin;
            var transformation = orgTransform.Clone();

            destinationElement.RenderTransform = orgTransform.Clone();
            var storyboard = new Storyboard();

            foreach (var ani in orgStoryboard.Children)
            {
                storyboard.Children.Add(ani.Clone());
            }
            Storyboard.SetTarget(storyboard, destinationElement);
            return(storyboard);
        }