Qual è il modo corretto di interrompere e riavviare uno storyboard dal codice .net?Riavvio di uno storyboard WPF
sto cercando ...
myStory.Stop(this);
Prevedendo che una chiamata successiva a .Begin (questo); ricomincerebbe dalla timeline a zero, ma invece, lo storyboard riprende proprio dove è stato fermato.
ho cercato
.Remove(this);
e ho provato
.Seek(TimeSpan.Zero);
che, inoltre, non ha funzionato.
Maggiori dettagli ... Ecco il mio esempio di storyboard.
<Storyboard x:Key="overlay">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="textone" Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="00:00:03.0" Value="0"/>
<SplineDoubleKeyFrame KeyTime="00:00:03.0" Value="1"/>
<SplineDoubleKeyFrame KeyTime="00:00:06.0" Value="1"/>
<SplineDoubleKeyFrame KeyTime="00:00:06.0" Value="0"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="texttwo" Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="00:00:07.0" Value="0"/>
<SplineDoubleKeyFrame KeyTime="00:00:07.0" Value="1"/>
<SplineDoubleKeyFrame KeyTime="00:00:10.0" Value="1"/>
<SplineDoubleKeyFrame KeyTime="00:00:10.0" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
Così il testo nella Textone corre, e se si chiude la schermata e tornare alla schermata in fretta, il texttwo, in realtà viene riprodotta per uno storyboard appena avviato. Quindi lo storyboard originale (dalla prima schermata) è ancora in riproduzione e viene riprodotto, anche se l'ho rimosso e interrotto.
forse è il mio setup. Ecco un po 'più di informazioni. Ho una classe di base con una proprietà storyboard storyOverlay. Nel ctor di una classe figlia, faccio una storyOverlay = TryFindResource ("storyId") come Storyboard; poi, sto controllando se storyOVerlay! = Null; {storyOverlay.Remove (this); } Questo cambia qualcosa? – ScottCate