Example #1
0
        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            return;

            var scrollViewer = ScrollingHost.GetScrollViewer();

            if (scrollViewer == null)
            {
                return;
            }

            var properties = ElementCompositionPreview.GetScrollViewerManipulationPropertySet(scrollViewer);
            var header     = ElementCompositionPreview.GetElementVisual(HeaderPanel);
            var info       = ElementCompositionPreview.GetElementVisual(ScrollingInfo);

            var photo    = ElementCompositionPreview.GetElementVisual(Photo);
            var title    = ElementCompositionPreview.GetElementVisual(LabelTitle);
            var subtitle = ElementCompositionPreview.GetElementVisual(Subtitle);
            var action   = ElementCompositionPreview.GetElementVisual(SendMessage);

            if (ApiInformation.IsMethodPresent("Windows.UI.Composition.Compositor", "CreateLinearGradientBrush"))
            {
                var overlay  = photo.Compositor.CreateSpriteVisual();
                var gradient = overlay.Compositor.CreateLinearGradientBrush();
                gradient.ColorStops.Add(overlay.Compositor.CreateColorGradientStop(0, ((SolidColorBrush)App.Current.Resources["PageHeaderBackgroundBrush"]).Color));
                gradient.ColorStops.Add(overlay.Compositor.CreateColorGradientStop(1, ((SolidColorBrush)App.Current.Resources["PageSubHeaderBackgroundBrush"]).Color));
                gradient.StartPoint = new Vector2();
                gradient.EndPoint   = new Vector2(0, 1);
                overlay.Brush       = gradient;
                overlay.Size        = new Vector2((float)HeaderOverlay.ActualWidth, (float)HeaderOverlay.ActualHeight);

                HeaderOverlay.SizeChanged += (s, args) =>
                {
                    overlay.Size = args.NewSize.ToVector2();
                };

                ElementCompositionPreview.SetElementChildVisual(HeaderOverlay, overlay);

                var animOverlay = header.Compositor.CreateExpressionAnimation("Min(76, -Min(scrollViewer.Translation.Y, 0)) / 38");
                animOverlay.SetReferenceParameter("scrollViewer", properties);

                overlay.StartAnimation("Scale.Y", animOverlay);
            }

            var animClip = header.Compositor.CreateExpressionAnimation("Min(76, -Min(scrollViewer.Translation.Y, 0))");

            animClip.SetReferenceParameter("scrollViewer", properties);

            header.Clip = header.Compositor.CreateInsetClip(0, -32, -12, 0);
            header.Clip.StartAnimation("BottomInset", animClip);


            var animPhotoOffsetY = header.Compositor.CreateExpressionAnimation("-(Min(76, -Min(scrollViewer.Translation.Y, 0)) / 76 * 41)");

            animPhotoOffsetY.SetReferenceParameter("scrollViewer", properties);

            var animPhotoOffsetX = header.Compositor.CreateExpressionAnimation("Min(76, -Min(scrollViewer.Translation.Y, 0)) / 76 * 28");

            animPhotoOffsetX.SetReferenceParameter("scrollViewer", properties);

            var animPhotoScale = header.Compositor.CreateExpressionAnimation("1 -(Min(76, -Min(scrollViewer.Translation.Y, 0)) / 76 * (34 / 64))");

            animPhotoScale.SetReferenceParameter("scrollViewer", properties);

            photo.StartAnimation("Offset.Y", animPhotoOffsetY);
            photo.StartAnimation("Offset.X", animPhotoOffsetX);
            photo.StartAnimation("Scale.X", animPhotoScale);
            photo.StartAnimation("Scale.Y", animPhotoScale);


            var animTitleY = header.Compositor.CreateExpressionAnimation("-(Min(76, -Min(scrollViewer.Translation.Y, 0)) / 76 * 58)");

            animTitleY.SetReferenceParameter("scrollViewer", properties);

            var animTitleX = header.Compositor.CreateExpressionAnimation("-(Min(76, -Min(scrollViewer.Translation.Y, 0)) / 76 * 6)");

            animTitleX.SetReferenceParameter("scrollViewer", properties);

            title.StartAnimation("Offset.Y", animTitleY);
            title.StartAnimation("Offset.X", animTitleX);
            subtitle.StartAnimation("Offset.Y", animTitleY);
            subtitle.StartAnimation("Offset.X", animTitleX);


            var animInfoY = header.Compositor.CreateExpressionAnimation("-(Min(76, -Min(scrollViewer.Translation.Y, 0)) / 76 * 40)");

            animInfoY.SetReferenceParameter("scrollViewer", properties);

            var animOpacity = header.Compositor.CreateExpressionAnimation("1 -(Min(76, -Min(scrollViewer.Translation.Y, 0)) / 76)");

            animOpacity.SetReferenceParameter("scrollViewer", properties);

            info.StartAnimation("Offset.Y", animInfoY);
            info.StartAnimation("Opacity", animOpacity);

            action.CenterPoint = new Vector3(18);
            action.StartAnimation("Opacity", animOpacity);
            action.StartAnimation("Scale.X", animOpacity);
            action.StartAnimation("Scale.Y", animOpacity);
        }
 public ScrollViewer GetScrollViewer()
 {
     return(ScrollingHost.GetScrollViewer());
 }