Как предотвратить прерывание анимации [WPF] - PullRequest
4 голосов
/ 02 октября 2009

Например, у меня есть анимация, которая срабатывает при нажатии мыши.

Проблема в том, что если вы продолжите нажимать, анимация перезапустится.

Я хочу гарантировать, что анимация всегда воспроизводится до конца.

Идеи

Ответы [ 2 ]

2 голосов
/ 02 октября 2009

Один трюк, который я обнаружил, состоит в том, чтобы не включать "От" в моей анимации . Таким образом, значения всегда будут начинаться с того значения, которое имеет свойство, которое вы сейчас анимируете. Это означает, что если анимация перезапускается, она не будет сбрасывать свойство обратно к его начальному значению и вместо этого будет выглядеть так, как будто она продолжает оригинальную анимацию.

0 голосов
/ 24 ноября 2009

Все еще не точный ответ, который вы ищете, но это решило проблему, связанную с использованием триггера MouseDown, который запускал новую анимацию поверх еще работающей:

<BeginStoryboard>
  <Storyboard AutoReverse="True">
    <ColorAnimation Storyboard.TargetProperty="(Label.Foreground).(SolidColorBrush.Color)"
                    To="Red" Duration="0:0:1"/>
  </Storyboard>

Проблема с этой анимацией заключается в том, что когда она запускается снова до завершения, функция автореверса переворачивает ее на оттенок красного, которого она достигла до его запуска во второй раз, а не до исходного цвета, который был до первая анимация началась.

В моем случае это было легко решено так:

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