Сведения о вопросе

PASHA

11:09, 10th August, 2020

Теги

c#   wpf    

Как остановить анимацию в C# / WPF?

Просмотров: 671   Ответов: 8

У меня есть что-то вроде этого:

barProgress.BeginAnimation(RangeBase.ValueProperty, new DoubleAnimation(
    barProgress.Value, dNextProgressValue,
    new Duration(TimeSpan.FromSeconds(dDuration)));

Теперь, как бы вы остановили эту анимацию ( DoubleAnimation)? Причина, по которой я хочу это сделать, заключается в том, что я хотел бы начать новую анимацию (кажется, это работает, но трудно сказать) и в конечном итоге остановить последнюю анимацию...



  Сведения об ответе

VCe znayu

05:27, 13th August, 2020

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


  Сведения об ответе

dumai

07:45, 13th August, 2020

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

public void Begin(
    FrameworkContentElement containingObject,
    **bool isControllable**
)


  Сведения об ответе

SILA

12:35, 27th August, 2020

Есть два способа остановить 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);


  Сведения об ответе

ASSembler

05:13, 17th August, 2020

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

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

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

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


  Сведения об ответе

+-*/

21:06, 1st October, 2020

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

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

От MSDN

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


  Сведения об ответе

lourence

10:29, 6th August, 2020

<Trigger.EnterActions>
       <BeginStoryboard x:Name="myStory">
       .........
       </BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
       <StopStoryboard BeginStoryboardName="myStory"/>
</Trigger.ExitActions>


  Сведения об ответе

VCe znayu

21:06, 1st October, 2020

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


  Сведения об ответе

dumai

13:33, 23rd August, 2020

Вы можете использовать этот код:

[StoryBoardName].Remove([StoryBoardOwnerControl]);


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться