Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. |
Traduction
Source
|
Timeline.CurrentStateInvalidated, événement
Se produit lorsque la propriété CurrentState du Clock de la chronologie est mise à jour.
Assembly : PresentationCore (dans PresentationCore.dll)
XMLNS pour XAML : http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation
Utilisez l'événement CurrentStateInvalidated pour être notifié en cas de démarrage, d'arrêt ou de remplissage du Clock d'une chronologie.
La suspension d'un Clock ne modifie pas son CurrentState. Utilisez l'événement CurrentGlobalSpeedInvalidated pour être notifié en cas de suspension de l'horloge.
Même si cet événement se produit lorsque le ClockState devient non valide, cela ne signifie pas pour autant que le ClockState a changé : un Clock qui passe de Active à Filling et revient à Active au cours d'un même battement va déclencher cet événement, mais sa propriété CurrentState ne change pas dans les faits.
Le paramètre Object du gestionnaire d'événements EventHandler correspond au Clock qui a été créé pour cette chronologie.
Même si ce gestionnaire d'événements semble être associé à une chronologie, il s'inscrit en fait avec le Clock créé pour la chronologie en question. Pour plus d'informations, consultez Vue d'ensemble des événements de minutage.
A clock's CurrentStateInvalidated event occurs when its CurrentState becomes invalid, such as when the clock starts or stops. You can register for this event with directly using a Clock, or you can register using a Timeline.
In the following example, a Storyboard and two DoubleAnimation objects are used to animate the width of two rectangles. The CurrentStateInvalidated event is used to listen for clock state changes.
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="Microsoft.Samples.Animation.TimingBehaviors.StateExample" Background="LightGray"> <StackPanel Margin="20"> <TextBlock Name="ParentTimelineStateTextBlock"></TextBlock> <TextBlock Name="Animation1StateTextBlock"></TextBlock> <Rectangle Name="Rectangle01" Width="100" Height="50" Fill="Orange" /> <TextBlock Name="Animation2StateTextBlock"></TextBlock> <Rectangle Name="Rectangle02" Width="100" Height="50" Fill="Gray" /> <Button Content="Start Animations" Margin="20"> <Button.Triggers> <EventTrigger RoutedEvent="Button.Click"> <BeginStoryboard> <Storyboard RepeatBehavior="2x" AutoReverse="True" CurrentStateInvalidated="parentTimelineStateInvalidated" > <DoubleAnimation Storyboard.TargetName="Rectangle01" Storyboard.TargetProperty="Width" From="10" To="200" Duration="0:0:9" BeginTime="0:0:1" CurrentStateInvalidated="animation1StateInvalidated"/> <DoubleAnimation Storyboard.TargetName="Rectangle02" Storyboard.TargetProperty="Width" From="10" To="200" Duration="0:0:8" BeginTime="0:0:1" CurrentStateInvalidated="animation2StateInvalidated" /> </Storyboard> </BeginStoryboard> </EventTrigger> </Button.Triggers> </Button> </StackPanel> </Page>
using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.Animation; namespace Microsoft.Samples.Animation.TimingBehaviors { public partial class StateExample : Page { private void parentTimelineStateInvalidated(object sender, EventArgs args) { Clock myClock = (Clock)sender; ParentTimelineStateTextBlock.Text += myClock.CurrentTime.ToString() + ":" + myClock.CurrentState.ToString() + " "; } private void animation1StateInvalidated(object sender, EventArgs args) { Clock myClock = (Clock)sender; Animation1StateTextBlock.Text += myClock.Parent.CurrentTime.ToString() + ":" + myClock.CurrentState.ToString() + " "; } private void animation2StateInvalidated(object sender, EventArgs args) { Clock myClock = (Clock)sender; Animation2StateTextBlock.Text += myClock.Parent.CurrentTime.ToString() + ":" + myClock.CurrentState.ToString() + " "; } } }
The following illustration shows the different states the animations enter as the parent timeline (Storyboard) progresses.
The following table shows the times at which Animation1's CurrentStateInvalidated event fires:
|
Time (Seconds) |
1 |
10 |
19 |
21 |
30 |
39 |
|
State |
Active |
Active |
Stopped |
Active |
Active |
Stopped |
The following table shows the times at which Animation2's CurrentStateInvalidated event fires:
|
Time (Seconds) |
1 |
9 |
11 |
19 |
21 |
29 |
31 |
39 |
|
State |
Active |
Filling |
Active |
Stopped |
Active |
Filling |
Active |
Stopped |
Notice that Animation1's CurrentStateInvalidated event fires at 10 seconds, even though its state remains Active. That's because its state changed at 10 seconds, but it changed from Active to Filling and then back to Active in the same tick.
Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2
Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.