Freigeben über


Storyboard Klasse

Definition

Steuert Animationen mit einer Zeitleiste und stellt Objekt- und Eigenschafteninformationen für die untergeordneten Animationen bereit.

public ref class Storyboard sealed : Timeline
/// [Microsoft.UI.Xaml.Markup.ContentProperty(Name="Children")]
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class Storyboard final : Timeline
[Microsoft.UI.Xaml.Markup.ContentProperty(Name="Children")]
[Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class Storyboard : Timeline
Public NotInheritable Class Storyboard
Inherits Timeline
<Storyboard ...>
  oneOrMoreChildTimelines
</Storyboard>
Vererbung
Object Platform::Object IInspectable DependencyObject Timeline Storyboard
Attribute

Beispiele

Das folgende Beispiel zeigt, wie Sie die Methoden Begin, Stop, Pause und Resume verwenden, um die Wiedergabe eines Storyboards (Animation) zu steuern. Eine Reihe von Schaltflächen ermöglicht es dem Benutzer, diese Methoden aufzurufen.

<StackPanel x:Name="LayoutRoot" >
    <StackPanel.Resources>
        <Storyboard x:Name="myStoryboard">
            <DoubleAnimation From="1" To="6" Duration="00:00:6" 
            Storyboard.TargetName="rectScaleTransform" 
            Storyboard.TargetProperty="ScaleY">
                <DoubleAnimation.EasingFunction>
                    <BounceEase Bounces="2" EasingMode="EaseOut" 
                            Bounciness="2" />
                </DoubleAnimation.EasingFunction>
            </DoubleAnimation>
        </Storyboard>
    </StackPanel.Resources>

    <!-- Button that begins animation. -->
    <Button Click="Animation_Begin"
         Margin="2" Content="Begin" />

    <!-- Button that pauses Animation. -->
    <Button Click="Animation_Pause"
         Margin="2" Content="Pause" />

    <!-- Button that resumes Animation. -->
    <Button Click="Animation_Resume"
         Margin="2" Content="Resume" />

    <!-- Button that stops Animation. Stopping the animation 
         returns the ellipse to its original location. -->
    <Button Click="Animation_Stop"
         Margin="2" Content="Stop" />

    <Rectangle Fill="Blue" Width="200" Height="30">
        <Rectangle.RenderTransform>
            <ScaleTransform x:Name="rectScaleTransform" />
        </Rectangle.RenderTransform>
    </Rectangle>

</StackPanel>
private void Animation_Begin(object sender, RoutedEventArgs e)
{
    myStoryboard.Begin();
}
private void Animation_Pause(object sender, RoutedEventArgs e)
{
    myStoryboard.Pause();
}
private void Animation_Resume(object sender, RoutedEventArgs e)
{
    myStoryboard.Resume();
}
private void Animation_Stop(object sender, RoutedEventArgs e)
{
    myStoryboard.Stop();
}
//using Windows.UI.Xaml.Media.Animation;
//using Windows.UI.Xaml.Shapes;
//using Windows.UI

private void Create_And_Run_Animation(object sender, RoutedEventArgs e)
{
    // Create a red rectangle that will be the target
    // of the animation.
    Rectangle myRectangle = new Rectangle();
    myRectangle.Width = 200;
    myRectangle.Height = 200;
    SolidColorBrush myBrush = new SolidColorBrush(Colors.Red);
    myRectangle.Fill = myBrush;

    // Create the transform
    TranslateTransform moveTransform = new TranslateTransform();
    moveTransform.X = 0;
    moveTransform.Y = 0;
    myRectangle.RenderTransform = moveTransform;

    // Add the rectangle to the tree.
    LayoutRoot.Children.Add(myRectangle);

    // Create a duration of 2 seconds.
    Duration duration = new Duration(TimeSpan.FromSeconds(2));
    // Create two DoubleAnimations and set their properties.
    DoubleAnimation myDoubleAnimationX = new DoubleAnimation();
    DoubleAnimation myDoubleAnimationY = new DoubleAnimation();
    myDoubleAnimationX.Duration = duration;
    myDoubleAnimationY.Duration = duration;
    Storyboard justintimeStoryboard = new Storyboard();
    justintimeStoryboard.Duration = duration;
    justintimeStoryboard.Children.Add(myDoubleAnimationX);
    justintimeStoryboard.Children.Add(myDoubleAnimationY);
    Storyboard.SetTarget(myDoubleAnimationX, moveTransform);
    Storyboard.SetTarget(myDoubleAnimationY, moveTransform);

    // Set the X and Y properties of the Transform to be the target properties
    // of the two respective DoubleAnimations.
    Storyboard.SetTargetProperty(myDoubleAnimationX, "X");
    Storyboard.SetTargetProperty(myDoubleAnimationY, "Y");
    myDoubleAnimationX.To = 200;
    myDoubleAnimationY.To = 200;

    // Make the Storyboard a resource.
    LayoutRoot.Resources.Add("justintimeStoryboard", justintimeStoryboard);
    // Begin the animation.
    justintimeStoryboard.Begin();
}

Hinweise

Storyboard ist eine wichtige Klasse im Konzept von Storyboardanimationen. Weitere Informationen zum Konzept finden Sie unter Storyboardanimationen.

Storyboard wird für die folgenden Eigenschaften verwendet:

Diese Eigenschaften sind nicht der einzige Ort, an dem ein Storyboard definiert wird. Die typische Verwendung eines Storyboards für eine Storyboardanimation besteht darin, dass das Storyboard in einer Resources-Auflistung (entweder Application.Resources oder FrameworkElement.Resources oder möglicherweise als Ressource in einer Datei wie Generic.xaml für ein benutzerdefiniertes Steuerelement) definiert wird. Wenn sie als XAML-Ressource definiert ist, sollten Sie Ihrem Storyboard immer einen x:Name-Attributwert zuweisen. Sie können dann später im CodeBehind auf den Namen als Programmiervariable verweisen. Sie benötigen diesen Verweis, um tatsächlich die Animationen auszuführen, die das Storyboard enthält, indem Sie die Begin-Methode für dieses Storyboard-instance aufrufen. Storyboard verfügt auch über andere Steuerungsmethoden wie Stop , mit denen die Animation danach gesteuert werden kann.

Storyboard erbt mehrere Eigenschaften von Der Zeitachse. Diese Eigenschaften können entweder auf ein Storyboard oder auf eine der darin enthaltenen Animationen (in der Children-Auflistung ) angewendet werden. Es gibt Vor- und Nachteile beim Festlegen von Zeitachseneigenschaften auf der Standard Storyboards statt für jede Animation. Weitere Informationen finden Sie unter Storyboardanimationen.

Sie benötigen auch ein Storyboard, um die vordefinierten Animationen zu steuern, die Sie zu Steuerelementen oder der Benutzeroberfläche hinzufügen, wenn Sie eine der Designanimationen verwenden. Designanimationen verfügen nicht über einen angeborenen Triggerpunkt, sodass Sie Designanimationen als Kinder in einem Storyboard enthalten müssen. Wenn das Storyboard als VisualState.Storyboard-Wert verwendet wird, wird die Animation ausgeführt, wenn dieser visuelle Zustand geladen wird. Oder wenn sie sich in einem VisualTransition.Storyboard befindet, wird die Animation ausgeführt, wenn dieser Übergang vom visuellen Zustands-Manager erkannt wird. Dies ist die gebräuchlichste Möglichkeit, eine Designanimation zu verwenden, aber Sie können auch eine in eine lose Storyboardressource einfügen und die Animation explizit starten, indem Sie Begin aufrufen.

Angefügte XAML-Eigenschaften

Storyboard ist die Hostdienstklasse für mehrere angefügte XAML-Eigenschaften. Diese ermöglichen untergeordnete Animationen, die vom Storyboard für jedes Ziel separate Zielelemente und Zieleigenschaften gesteuert werden, während weiterhin demselben Steuerungs Zeitleiste- und Triggermechanismus wie das übergeordnete Element folgen.

Um den XAML-Prozessorzugriff auf die angefügten Eigenschaften zu unterstützen und auch äquivalente Get - und Set-Vorgänge für Code verfügbar zu machen, verfügt jede angefügte XAML-Eigenschaft über ein Paar von Get- und Set-Accessormethoden. Eine weitere Möglichkeit zum Abrufen oder Festlegen des Werts im Code besteht darin, das Abhängigkeitseigenschaftensystem zu verwenden, entweder GetValue oder SetValue aufzurufen und das Bezeichnerfeld als Abhängigkeitseigenschaftsbezeichner zu übergeben.

Angefügte Eigenschaft BESCHREIBUNG
TargetName Ruft den Namen des zu animierenden Objekts ab oder legt ihn fest. Storyboard.TargetName wird verwendet, um anhand seines Namens auf ein anderes Element zu verweisen. Das Element, auf das verwiesen wird, ist das Element/Objekt, auf das die Animation angewendet werden soll. Dieser Mechanismus ist Teil des grundlegenden Entwurfs des Animationssystems: Er ermöglicht es, Animationsressourcen getrennt von Ui-Deklarationsressourcen zu deklarieren, und ermöglicht es, eine Animationsdefinition auf mehrere verschiedene Eigenschaftenverhalten anzuwenden. Für den Wert von Storyboard.TargetName für eine bestimmte Animation geben Sie den Name - oder x:Name-Attributwert des Zielelements an, bei dem es sich um eine Zeichenfolge handelt. Dieses benannte Element sollte bereits in einem anderen Bereich des XAML-Markups vorhanden sein.
Die Bedeutung von Name/x:Name-Attributzeichenfolgen wird durch ein XAML-Namescope-Konzept gesteuert. In den meisten Animationszielszenarien müssen Sie sich keine Gedanken über den Einfluss von XAML-Namescopes machen, aber es können Probleme bei der XAML-Namensauflösung auftreten, wenn Sie versuchen, Vorlagenteile oder Objekte als Ziel zu verwenden, die mit XamlReader.Load erstellt und anschließend der Objektstruktur hinzugefügt wurden. Weitere Informationen finden Sie unter XAML-Namescopes.
Targetproperty Ruft die Eigenschaft ab oder legt diese fest, die animiert werden soll.Storyboard.TargetProperty zielt auf eine bestimmte Eigenschaft des durch Storyboard.TargetName angegebenen Elements ab. Der Wert, den Sie für Storyboard.TargetProperty bereitstellen, umfasst ein Konzept, das als Eigenschaftspfad bezeichnet wird. Weitere Informationen zum Angeben eines Eigenschaftenpfads für eine Animation finden Sie unter Hinweise in SetTargetProperty oder Storyboard.TargetProperty oder im Thema Eigenschaftenpfadsyntax .

Konstruktoren

Storyboard()

Initialisiert eine neue instance der Storyboard-Klasse.

Eigenschaften

AutoReverse

Ruft einen Wert ab, der angibt, ob die Zeitachse nach einem vollständigen Durchgang vorwärts in umgekehrter Reihenfolge abspielt.

(Geerbt von Timeline)
BeginTime

Ruft den Zeitpunkt ab, zu dem diese Zeitachse beginnen soll, oder legt diese fest.

(Geerbt von Timeline)
Children

Ruft die Auflistung der untergeordneten Timeline-Objekte ab.

Dispatcher

Gibt immer in einer Windows App SDK-App zurücknull. Verwenden Sie stattdessen DispatcherQueue .

(Geerbt von DependencyObject)
DispatcherQueue

Ruft den DispatcherQueue ab, dem dieses Objekt zugeordnet ist. Stellt DispatcherQueue eine Funktion dar, die auf den DependencyObject im UI-Thread zugreifen kann, auch wenn der Code von einem Nicht-UI-Thread initiiert wird.

(Geerbt von DependencyObject)
Duration

Ruft die Zeitdauer ab, für die diese Zeitachse wiedergegeben wird, ohne Wiederholungen, oder legt diese fest.

(Geerbt von Timeline)
FillBehavior

Ruft einen Wert ab, der angibt, wie sich die Animation verhält, nachdem sie das Ende ihres aktiven Zeitraums erreicht hat, oder legt diesen fest.

(Geerbt von Timeline)
RepeatBehavior

Ruft das Wiederholungsverhalten dieser Zeitachse ab oder legt es fest.

(Geerbt von Timeline)
SpeedRatio

Ruft die Rate relativ zum übergeordneten Element ab, zu dem für diese Zeitachse ein Fortschritt erfolgt, oder legt diese fest.

(Geerbt von Timeline)
TargetNameProperty

Identifiziert die angefügte Storyboard.TargetName-XAML-Eigenschaft .

TargetPropertyProperty

Identifiziert die angefügte Storyboard.TargetProperty-XAML-Eigenschaft .

Angefügte Eigenschaften

TargetName

Ruft den Namen des zu animierenden Objekts ab oder legt ihn fest.

TargetProperty

Ruft die Eigenschaft ab oder legt diese fest, die animiert werden soll.

Methoden

Begin()

Initiiert den Satz von Animationen, die dem Storyboard zugeordnet sind.

ClearValue(DependencyProperty)

Löscht den lokalen Wert einer Abhängigkeitseigenschaft.

(Geerbt von DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Gibt einen beliebigen Basiswert zurück, der für eine Abhängigkeitseigenschaft eingerichtet wurde, der in Fällen gilt, in denen eine Animation nicht aktiv ist.

(Geerbt von DependencyObject)
GetCurrentState()

Ruft den Uhrzustand des Storyboards ab.

GetCurrentTime()

Ruft die aktuelle Animationsuhrzeit des Storyboards ab.

GetTargetName(Timeline)

Ruft den Wert der angefügten Xaml-Eigenschaft Storyboard.TargetName aus einem Zielelement ab.

GetTargetProperty(Timeline)

Ruft den Wert der angefügten XAML-Eigenschaft Storyboard.TargetProperty aus einem Zielelement ab.

GetValue(DependencyProperty)

Gibt den aktuellen effektiven Wert einer Abhängigkeitseigenschaft aus einem DependencyObject zurück.

(Geerbt von DependencyObject)
Pause()

Hält die dem Storyboard zugeordnete Animationsuhr an.

ReadLocalValue(DependencyProperty)

Gibt den lokalen Wert einer Abhängigkeitseigenschaft zurück, wenn ein lokaler Wert festgelegt ist.

(Geerbt von DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registriert eine Benachrichtigungsfunktion zum Lauschen auf Änderungen an einer bestimmten DependencyProperty für dieses DependencyObject-instance.

(Geerbt von DependencyObject)
Resume()

Setzt die Dem Storyboard zugeordnete Animationsuhr oder den Laufzeitzustand fort.

Seek(TimeSpan)

Verschiebt das Storyboard an die angegebene Animationsposition. Das Storyboard führt die angeforderte Suche aus, wenn der nächste Takt auftritt.

SeekAlignedToLastTick(TimeSpan)

Verschiebt das Storyboard sofort (synchron) an die angegebene Animationsposition.

SetTarget(Timeline, DependencyObject)

Bewirkt, dass die angegebene Zeitachse auf das angegebene Objekt ausgerichtet ist.

SetTargetName(Timeline, String)

Legt den Wert der angefügten Xaml-Eigenschaft Storyboard.TargetName für ein Zielelement fest.

SetTargetProperty(Timeline, String)

Legt den Wert der angefügten XAML-Eigenschaft Storyboard.TargetProperty für ein Zielelement fest.

SetValue(DependencyProperty, Object)

Legt den lokalen Wert einer Abhängigkeitseigenschaft für ein DependencyObject fest.

(Geerbt von DependencyObject)
SkipToFill()

Erhöht die aktuelle Zeit der Uhr des Storyboards bis zum Ende seiner aktiven Periode.

Stop()

Beendet das Storyboard.

UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Bricht eine Änderungsbenachrichtigung ab, die zuvor durch Aufrufen von RegisterPropertyChangedCallback registriert wurde.

(Geerbt von DependencyObject)

Ereignisse

Completed

Tritt auf, wenn die Wiedergabe des Storyboard-Objekts abgeschlossen wurde.

(Geerbt von Timeline)

Gilt für:

Weitere Informationen