Esempio n. 1
0
        private void MainItemGrid_OnTap(object sender, GestureEventArgs e)
        {
            if (ViewModel.IsWorking)
            {
                return;
            }

            var frameworkElement = sender as FrameworkElement;

            if (frameworkElement == null)
            {
                return;
            }

            var user = frameworkElement.DataContext as TLUserBase;

            if (user == null)
            {
                return;
            }

            ViewModel.UserAction(user);

            var tapedItem = frameworkElement;

            _tapedItem = tapedItem;

            VisualTreeExtensions.FindVisualChildWithPredicate <TextBlock>(tapedItem, AnimatedBasePage.GetIsAnimationTarget);

            if (!(_tapedItem.RenderTransform is CompositeTransform))
            {
                _tapedItem.RenderTransform = new CompositeTransform();
            }

            FrameworkElement tapedItemContainer = _tapedItem.FindParentOfType <ListBoxItem>();

            if (tapedItemContainer != null)
            {
                tapedItemContainer = tapedItemContainer.FindParentOfType <ContentPresenter>();
            }

            var storyboard = new Storyboard();

            var timeline = new DoubleAnimationUsingKeyFrames();

            timeline.KeyFrames.Add(new EasingDoubleKeyFrame {
                KeyTime = TimeSpan.FromSeconds(0.0), Value = 0.0
            });
            timeline.KeyFrames.Add(new EasingDoubleKeyFrame {
                KeyTime = TimeSpan.FromSeconds(0.25), Value = 73.0
            });
            Storyboard.SetTarget(timeline, tapedItem);
            Storyboard.SetTargetProperty(timeline, new PropertyPath("(UIElement.RenderTransform).(CompositeTransform.TranslateY)"));
            storyboard.Children.Add(timeline);

            var timeline2 = new DoubleAnimationUsingKeyFrames();

            timeline2.KeyFrames.Add(new EasingDoubleKeyFrame {
                KeyTime = TimeSpan.FromSeconds(0.0), Value = 0.0
            });
            timeline2.KeyFrames.Add(new EasingDoubleKeyFrame {
                KeyTime = TimeSpan.FromSeconds(0.25), Value = 425.0, EasingFunction = new ExponentialEase {
                    EasingMode = EasingMode.EaseIn, Exponent = 5.0
                }
            });
            Storyboard.SetTarget(timeline2, tapedItem);
            Storyboard.SetTargetProperty(timeline2, new PropertyPath("(UIElement.RenderTransform).(CompositeTransform.TranslateX)"));
            storyboard.Children.Add(timeline2);

            var timeline3 = new DoubleAnimationUsingKeyFrames();

            timeline3.KeyFrames.Add(new EasingDoubleKeyFrame {
                KeyTime = TimeSpan.FromSeconds(0.0), Value = 1.0
            });
            timeline3.KeyFrames.Add(new EasingDoubleKeyFrame {
                KeyTime = TimeSpan.FromSeconds(0.2), Value = 1.0
            });
            timeline3.KeyFrames.Add(new EasingDoubleKeyFrame {
                KeyTime = TimeSpan.FromSeconds(0.25), Value = 0.0
            });
            Storyboard.SetTarget(timeline3, tapedItem);
            Storyboard.SetTargetProperty(timeline3, new PropertyPath("(UIElement.Opacity)"));
            storyboard.Children.Add(timeline3);

            if (tapedItemContainer != null)
            {
                var timeline4 = new ObjectAnimationUsingKeyFrames();
                timeline4.KeyFrames.Add(new DiscreteObjectKeyFrame {
                    KeyTime = TimeSpan.FromSeconds(0.0), Value = 999.0
                });
                timeline4.KeyFrames.Add(new DiscreteObjectKeyFrame {
                    KeyTime = TimeSpan.FromSeconds(0.25), Value = 0.0
                });
                Storyboard.SetTarget(timeline4, tapedItemContainer);
                Storyboard.SetTargetProperty(timeline4, new PropertyPath("(Canvas.ZIndex)"));
                storyboard.Children.Add(timeline4);
            }
            _lastStoryboard = storyboard;
            storyboard.Begin();
        }