Я пытаюсь создать анимацию, чтобы она выглядела так, как будто кнопка переворачивается и отображается обратная сторона. Итак, что я пытался сделать, это:
1 - Показать кнопку с BackgroundColor x. (Кнопка теперь имеет Width
из null
, свойство ActualWidth
имеет значение.)
2 - Создайте двойную анимацию, которая изменяет ширину кнопки на ноль.
DoubleAnimation widthAnimation = new DoubleAnimation();
widthAnimation.From = this.ActualWidth;
widthAnimation.To = 0;
widthAnimation.SpeedRatio = 3;
widthAnimation.Duration = TimeSpan.FromMilliseconds(800);
3- Изменить цвет фона кнопки.
ColorAnimation colorAnimation = new ColorAnimation();
colorAnimation.From = State ? _xColor : _yColor;
colorAnimation.To = State ? _yColor : _xColor;
colorAnimation.BeginTime = TimeSpan.FromMilliseconds(400);
colorAnimation.Duration = TimeSpan.Zero;
4- Вернуть ширину обратно к исходному значению.
widthAnimation.AutoReverse = true;
Проблема заключается в том, что при анимации, выполняемой дважды, анимация читает this.ActualWidth
во время анимации, что приводит к сбою до исходной ширины. Как я могу решить это? Я хотел бы снова установить Width
на null
, но мне это кажется невозможным.