public void Hide()
        {
            DoubleAnimation animation = new DoubleAnimation();

            animation.From     = DefaultHeight;
            animation.To       = 0;
            animation.Duration = Duration;
            PopupBorder.BeginAnimation(Border.HeightProperty, animation);
            IsFallOut = false;
        }
예제 #2
0
        private void OnOpened(object sender, EventArgs e)
        {
            Keyboard.Focus(SearchBox);

            switch (taskbarEdge)
            {
            case Edge.Top:
                Placement = PlacementMode.Bottom;
                PopupBorder.BorderThickness = new Thickness(1);
                PopupMarginBorder.Margin    = new Thickness(10, 0, 10, 10);
                break;

            case Edge.Left:
                Placement = PlacementMode.Right;
                PopupBorder.BorderThickness = new Thickness(1);
                PopupMarginBorder.Margin    = new Thickness(0, 10, 10, 10);
                break;

            case Edge.Right:
                Placement = PlacementMode.Left;
                PopupBorder.BorderThickness = new Thickness(1);
                PopupMarginBorder.Margin    = new Thickness(10, 10, 0, 10);
                break;

            case Edge.Bottom:
                Placement = PlacementMode.Top;
                PopupBorder.BorderThickness = new Thickness(1, 1, 1, 0);
                PopupMarginBorder.Margin    = new Thickness(10, 10, 10, 0);
                break;
            }

            Height = Properties.Settings.Default.popupSize.Height;
            Width  = Properties.Settings.Default.popupSize.Width;

            QuinticEase ease = new QuinticEase
            {
                EasingMode = EasingMode.EaseOut
            };

            int             modifier = taskbarEdge == Edge.Right || taskbarEdge == Edge.Bottom ? 1 : -1;
            Duration        duration = TimeSpan.FromSeconds(Properties.Settings.Default.isAnimationsDisabled ? 0 : 0.4);
            DoubleAnimation outer    = new DoubleAnimation(modifier * 150, 0, duration)
            {
                EasingFunction = ease
            };
            DependencyProperty outerProp = taskbarEdge == Edge.Bottom || taskbarEdge == Edge.Top ? TranslateTransform.YProperty : TranslateTransform.XProperty;

            translateTransform?.BeginAnimation(outerProp, outer);

            DoubleAnimation opacity = new DoubleAnimation(0, 1, duration)
            {
                EasingFunction = ease
            };

            PopupBorder?.BeginAnimation(OpacityProperty, opacity);

            duration = TimeSpan.FromSeconds(Properties.Settings.Default.isAnimationsDisabled ? 0 : 0.8);
            ThicknessAnimation inner = new ThicknessAnimation(new Thickness(0), duration)
            {
                EasingFunction = ease
            };

            if (taskbarEdge == Edge.Top)
            {
                inner.From = new Thickness(0, -50, 0, 50);
            }
            else if (taskbarEdge == Edge.Right)
            {
                inner.From = new Thickness(50, 0, -50, 0);
            }
            else if (taskbarEdge == Edge.Bottom)
            {
                inner.From = new Thickness(0, 50, 0, -50);
            }
            else if (taskbarEdge == Edge.Left)
            {
                inner.From = new Thickness(-50, 0, 50, 0);
            }
            ContentGrid?.BeginAnimation(MarginProperty, inner);
        }