Как я могу остановить анимацию wpf [duplicate]

Я не о Python, но в Scala и Java можно установить режим сохранения следующим образом:

df.write.mode("append").csv("pathToFile")

Я предполагаю, что он должен быть похож на Python. Это может оказаться полезным.

45
задан Daren Thomas 21 August 2008 в 16:45
поделиться

8 ответов

Чтобы остановить его, снова вызовите BeginAnimation, а второй аргумент установлен на null.

74
ответ дан Vadim Ovchinnikov 22 August 2018 в 03:49
поделиться
  • 1
    Быть осторожен. Это не работает, если вы укажете HandoffBehavior.Compose. Подробнее см. В msdn.microsoft.com/en-us/library/ms590757%28v=VS.90%29.aspx . Обратите внимание на doco для параметра анимации. – LukeN 23 June 2011 в 02:03
  • 2
    Вызов BeginAnimation во второй раз, похоже, не останавливает анимацию & quot; clock & quot; от первой анимации. По истечении заданного времени анимация вызывает событие Completed. Является ли это не вызвано непосредственно при вызове BeginAnimation, а скорее, когда анимация закончила бы . – BatteryBackupUnit 8 June 2015 в 12:49

При использовании раскадровки для управления анимацией убедитесь, что для второго параметра задано значение true, чтобы настроить анимацию как управляемую:

public void Begin(
    FrameworkContentElement containingObject,
    **bool isControllable**
)
28
ответ дан bas 22 August 2018 в 03:49
поделиться
  • 1
    Плюс один к вам, мне было интересно, почему моя анимация не ответила на «Stop & quot;». – Joon 3 June 2010 в 20:07
  • 2
    Да, да, да, это и было. Отсутствие "истины" гонял меня орехами :) – Johan Danforth 16 August 2011 в 10:28
  • 3
    вы легенда! это сводило меня с ума! – Mark Staff 14 September 2011 в 04:36
  • 4
    Вопрос касается анимаций, а не раскадровки (как ответ отвечает). – SandRock 31 January 2013 в 17:37

Поместите анимацию в StoryBoard. Call Begin () и Stop () на раскадровке, чтобы остановить анимацию.

4
ответ дан Brian Leahy 22 August 2018 в 03:49
поделиться

Существует два способа остановить BeginAnimation. Первый - снова вызвать BeginAnimation, а второй параметр равен null. Это удалит все анимации в свойстве и вернет значение обратно к его базовому значению.

В зависимости от того, как вы используете это значение, это может быть не то поведение, которое вы хотите. Второй способ - установить анимацию BeginTime равным null, а затем вызвать BeginAnimation с ней. Это позволит удалить эту конкретную анимацию и оставить значение в текущей позиции.

DoubleAnimation myAnimation = new Animation();
// Initialize animation
...

// To start
element.BeginAnimation(Property, myAnimation);

// To stop and keep the current value of the animated property
myAnimation.BeginTime = null;
element.BeginAnimation(Property, myAnimation);
16
ответ дан BruceLH 22 August 2018 в 03:49
поделиться
  • 1
    Согласен. Это отвечает на вопрос, применяя специально к запросу OPs для анимаций, а не к Раскадке и предоставляет два хороших варианта. – Grim 26 February 2016 в 13:17
<Trigger.EnterActions>
       <BeginStoryboard x:Name="myStory">
       .........
       </BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
       <StopStoryboard BeginStoryboardName="myStory"/>
</Trigger.ExitActions>
5
ответ дан Fawaz 22 August 2018 в 03:49
поделиться
  • 1
    StopStoryBoard не поддерживается в проекте Windows Presentation Foundation (WPF) – Simon Smith 8 September 2016 в 15:52

В моем случае мне пришлось использовать две команды, у моей xaml есть кнопка, которая запускает триггер, а его триггер запускает анимацию раскадровки.

Я поставил кнопку, чтобы остановить анимацию с помощью этого кода позади:

MyBeginStoryboard.Storyboard.Begin(this, true);
MyBeginStoryboard.Storyboard.Stop(this);

Мне это не нравится, но он действительно работает здесь. Попробуй!

7
ответ дан Junior M 22 August 2018 в 03:49
поделиться
  • 1
    Не забудьте вызвать Storyboard.Remove (это), а также вы можете пропустить память, так как ваш FrameworkElement будет ссылаться на раскадровку. Я просто нашел экземпляр в моем коде, где просто останавливается и заменяет анимацию, оставшуюся 4000+ анимации, укоренившейся после нескольких недель. – LukeN 23 June 2011 в 02:07

Если вы хотите, чтобы базовое значение снова стало эффективным значением, вы должны остановить анимацию от влияния на свойство. Существует три способа сделать это с помощью анимации раскадровки:

  • Установите для свойства FillBehavior анимации значение Stop
  • Удалите всю раскадровку
  • Удалите анимацию из индивидуальное свойство

Из MSDN

Как установить свойство после анимации с помощью раскадровки

7
ответ дан Nick 22 August 2018 в 03:49
поделиться
0
ответ дан oliver 22 August 2018 в 03:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: