Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

ClockState-Enumeration

Aktualisiert: November 2007

Beschreibt die potenziellen Zustände des Clock-Objekts einer Zeitachse.

Namespace:  System.Windows.Media.Animation
Assembly:  PresentationCore (in PresentationCore.dll)

public enum ClockState
public enum ClockState
public enum ClockState
Object property="enumerationValue" .../>

MembernameBeschreibung
ActiveDie aktuelle Clock-Zeit ändert sich im direkten Verhältnis zum übergeordneten Element. Wenn die Zeitachse eine Animation ist, wirkt sie sich direkt auf die Zieleigenschaften aus, sodass sich ihr Wert von einem Tick (ein Samplingpunkt in der Zeit) zum nächsten Tick ändern kann. Wenn die Zeitachse über untergeordnete Elemente verfügt, sind diese möglicherweise Active, Filling oder Stopped.
FillingDie zeitliche Steuerung der Clock wird fortgesetzt, bleibt jedoch im Verhältnis zur übergeordneten zeitlichen Steuerung unverändert.. Wenn die Zeitachse eine Animation ist, wirkt sie sich direkt auf die Zieleigenschaften aus, doch ihre Werte bleiben zwischen Ticks unverändert. Wenn die Zeitachse über untergeordnete Elemente verfügt, sind diese möglicherweise Active, Filling oder Stopped.
StoppedDie zeitliche Steuerung der Clock wird angehalten, sodass der aktuelle Zeitwert und Fortschrittswert der Uhr nicht definiert sind. Wenn die Zeitachse eine Animation ist, wirkt sie sich nicht mehr auf die Zieleigenschaften aus. Wenn die Zeitachse über untergeordnete Elemente verfügt, sind diese ebenfalls Stopped.

Beachten Sie, dass ClockState nicht die Richtung der Zeit angibt und auch nicht angibt, ob eine Uhr angehalten wurde.

Diesen Erläuterungen liegt das Konzept von Ticks zugrunde. Eine ausführliche Erläuterung finden Sie unter Übersicht über das Animations- und Zeitsteuerungssystem.

Das CurrentStateInvalidated-Ereignis einer Uhr tritt auf, wenn ihr CurrentState ungültig wird, beispielsweise, wenn die Uhr angehalten oder gestartet wird. Sie können dieses Ereignis registrieren, indem Sie entweder direkt eine Clock verwenden, oder indem Sie die Registrierung mit einer Timeline vornehmen.

Im folgenden Beispiel werden ein Storyboard-Objekt und zwei DoubleAnimation-Objekte verwendet, um die Breite von zwei Rechtecken zu animieren. Das CurrentStateInvalidated-Ereignis wird verwendet, um Statusänderungen der Uhr zu überwachen.

<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() + " ";                 
        }
    }
}


Die folgende Abbildung zeigt die unterschiedlichen Zustände an, in die die Animationen übergehen, während die übergeordnete Zeitachse (Storyboard) fortschreitet.

Uhr-Zustände für ein Drehbuch mit zwei Animationen

In der folgenden Tabelle sind die Zeiten aufgeführt, zu denen das CurrentStateInvalidated-Ereignis von Animation1 ausgelöst wird:

Zeit (Sekunden)

1

10

19

21

30

39

Status

Aktiv

Aktiv

Beendet

Aktiv

Aktiv

Beendet

In der folgenden Tabelle sind die Zeiten aufgeführt, zu denen das CurrentStateInvalidated-Ereignis von Animation2 ausgelöst wird:

Zeit (Sekunden)

1

9

11

19

21

29

31

39

Status

Aktiv

Füllung

Aktiv

Beendet

Aktiv

Füllung

Aktiv

Beendet

Beachten Sie, dass das CurrentStateInvalidated-Ereignis von Animation1 bei 10 Sekunden ausgelöst wird, obwohl der Status weiterhin Active ist. Dies kommt daher, dass sich der Status bei 10 Sekunden geändert hat, wobei er sich jedoch von Active in Filling und am selben Teilstrich wieder in Active geändert hat.

Windows Vista

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0
Anzeigen: