Исчезните любой элемент управления с помощью анимации WPF - PullRequest
5 голосов
/ 10 февраля 2010

Я хочу переключить непрозрачность элемента управления (Button, TextBox, Panel и т. Д.) В моем проекте WPF и хотел проверить, правильно ли я это сделал.

Мой вопрос: Это тип функциональности, который вы обычно пишете на XAML, или вы использовали бы код, подобный приведенному ниже, для достижения результата постепенного появления / исчезновения?

internal static class AnimationExtensions
{
    internal enum TransitionSpeed
    {
        Instant = 0,
        Fast = 100,
        Normal = 200,
        Slow = 500
    }

    /// <summary>
    /// Toggles the opacity of a control.
    /// </summary>
    /// <param name="control">The control.</param>
    internal static void ToggleControlFade(this Control control)
    {
        control.ToggleControlFade(TransitionSpeed.Normal);
    }

    /// <summary>
    /// Toggles the opacity of a control.
    /// </summary>
    /// <param name="control">The control.</param>
    /// <param name="speed">The speed.</param>
    internal static void ToggleControlFade(this Control control, TransitionSpeed speed)
    {
        Storyboard storyboard = new Storyboard();
        TimeSpan duration = new TimeSpan(0, 0, 0, 0, (int)speed); //

        DoubleAnimation animation = new DoubleAnimation { From = 1.0, To = 0.0, Duration = new Duration(duration) };
        if (control.Opacity == 0.0)
        {
            animation = new DoubleAnimation { From = 0.0, To = 1.0, Duration = new Duration(duration) };
        }

        Storyboard.SetTargetName(animation, control.Name);
        Storyboard.SetTargetProperty(animation, new PropertyPath("Opacity", 0));
        storyboard.Children.Add(animation);

        storyboard.Begin(control);
    }
}

Как вы, вероятно, можете сказать, я очень, очень новичок в WPF.

Спасибо

1 Ответ

1 голос
/ 10 февраля 2010

Я склонен находить в местах, где мне нужно выполнить действие после анимации, или где анимация зависит от сложных триггеров, что кодовый фрагмент является лучшим местом, в противном случае XAML является хорошим местом для размещения анимации. (Я обычно делаю это для таких вещей, как переходы или простые события типа «onclick».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...