Pergunta

Eu tenho algo assim:

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

Agora, como você interromperia essa animação (o DoubleAnimation)?A razão pela qual quero fazer isso é porque gostaria de iniciar novas animações (isso parece funcionar, mas é difícil dizer) e eventualmente parar a última animação...

Foi útil?

Solução

Para parar, ligue BeginAnimation novamente com o segundo argumento definido como null.

Outras dicas

Ao usar storyboards para controlar uma animação, certifique-se de definir o segundo parâmetro como true para definir a animação como controlável:

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

Existem duas maneiras de interromper um BeginAnimation.A primeira é chamar BeginAnimation novamente com o segundo parâmetro definido como nulo.Isso removerá todas as animações da propriedade e reverter o valor de volta ao seu valor base.

Dependendo de como você está usando esse valor, esse pode não ser o comportamento desejado.A segunda maneira é definir as animações BeginTime como nulas e chamar BeginAnimation com elas.Isso removerá aquela animação específica e deixará o valor na posição atual.

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);

Se você deseja que o valor base se torne o valor efetivo novamente, deve impedir que a animação influencie a propriedade.Existem três maneiras de fazer isso com as animações do Storyboard:

  • Defina a propriedade Fillbehavior da animação para parar
  • Remova todo o Storyboard
  • Remova a animação da propriedade individual

Do MSDN

Como:Defina uma propriedade após animá-la com um storyboard

No meu caso tive que usar dois comandos, meu xaml tem um botão que dispara um gatilho, e seu gatilho dispara a animação do storyboard.

Coloquei um botão para parar a animação com este código por trás:

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

Eu não gosto disso, mas realmente funciona aqui.De uma chance!

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

Coloque a animação em um StoryBoard.Chame Begin() e Stop() no storyboard para iniciar e interromper as animações.

Você pode usar este código:

[StoryBoardName].Remove([StoryBoardOwnerControl]);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top