VisualTransition Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt das visuelle Verhalten dar, das auftritt, wenn das Steuerelement von einem visuellen Zustand in einen anderen wechselt.
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.UI.Xaml.Markup.ContentProperty(Name="Storyboard")]
class VisualTransition : DependencyObject
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.UI.Xaml.Markup.ContentProperty(Name="Storyboard")]
public class VisualTransition : DependencyObject
Public Class VisualTransition
Inherits DependencyObject
<VisualStateGroup>
<!--one or more Visual State elements in the implicit States collection property -->
<VisualStateGroup.Transitions>
<VisualTransition>
singleStoryboard
</VisualTransition>
<!--more transitions as above-->
</VisualStateGroup.Transitions>
</VisualStateGroup>
- Vererbung
- Attribute
Windows-Anforderungen
Gerätefamilie |
Windows 10 (eingeführt in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)
|
Beispiele
In diesem Beispiel wird eine VisualTransition erstellt, die angibt, dass der Rahmen des Steuerelements in blau und dann in gelb und dann in 1,5 Sekunden schwarz geändert wird, wenn der Benutzer die Maus vom Steuerelement weg bewegt.
<!--Take one and a half seconds to transition from the
PointerOver state to the Normal state.
Have the SolidColorBrush, BorderBrush, fade to blue,
then to yellow, and then to black in that time.-->
<VisualTransition From="PointerOver" To="Normal"
GeneratedDuration="0:0:1.5">
<Storyboard>
<ColorAnimationUsingKeyFrames
Storyboard.TargetProperty="Color"
Storyboard.TargetName="BorderBrush"
FillBehavior="HoldEnd" >
<ColorAnimationUsingKeyFrames.KeyFrames>
<LinearColorKeyFrame Value="Blue"
KeyTime="0:0:0.5" />
<LinearColorKeyFrame Value="Yellow"
KeyTime="0:0:1" />
<LinearColorKeyFrame Value="Black"
KeyTime="0:0:1.5" />
</ColorAnimationUsingKeyFrames.KeyFrames>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</VisualTransition>
<VisualStateGroup x:Name="CommonStates">
<!--Define the VisualTransitions that can be used when the control
transitions between VisualStates that are defined in the
VisualStatGroup.-->
<VisualStateGroup.Transitions>
<!--Take one hundredth of a second to transition to the
Pressed state.-->
<VisualTransition To="Pressed"
GeneratedDuration="0:0:0.01" />
<!--Take one half second to transition to the PointerOver state.-->
<VisualTransition To="PointerOver"
GeneratedDuration="0:0:0.5" />
<!--Take one hundredth of a second to transition from the
Pressed state to the PointerOver state.-->
<VisualTransition From="Pressed" To="PointerOver"
GeneratedDuration="0:0:0.01" />
<!--Take one and a half seconds to transition from the
PointerOver state to the Normal state.
Have the SolidColorBrush, BorderBrush, fade to blue,
then to yellow, and then to black in that time.-->
<VisualTransition From="PointerOver" To="Normal"
GeneratedDuration="0:0:1.5">
<Storyboard>
<ColorAnimationUsingKeyFrames
Storyboard.TargetProperty="Color"
Storyboard.TargetName="BorderBrush"
FillBehavior="HoldEnd" >
<ColorAnimationUsingKeyFrames.KeyFrames>
<LinearColorKeyFrame Value="Blue"
KeyTime="0:0:0.5" />
<LinearColorKeyFrame Value="Yellow"
KeyTime="0:0:1" />
<LinearColorKeyFrame Value="Black"
KeyTime="0:0:1.5" />
</ColorAnimationUsingKeyFrames.KeyFrames>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</VisualTransition>
</VisualStateGroup.Transitions>
<!--The remainder of the VisualStateGroup is the
same as the previous example.-->
<VisualState x:Name="Normal" />
<VisualState x:Name="PointerOver">
<Storyboard>
<ColorAnimation Storyboard.TargetName="BorderBrush"
Storyboard.TargetProperty="Color" To="Red" />
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed">
<Storyboard >
<ColorAnimation Storyboard.TargetName="BorderBrush"
Storyboard.TargetProperty="Color" To="Transparent"/>
</Storyboard>
</VisualState>
<!--The Disabled state is omitted for brevity.-->
</VisualStateGroup>
Hinweise
Eine VisualTransition ist ein Verhalten, das ein Storyboard initiiert. Dieses Storyboard ist eine Zeitleiste, die die Dauer der Ausführung von Animationen deklariert, die zwischen zwei visuellen Zuständen wechseln. Der Übergang kann für jede Kombination aus Startzustand ( Vom-Zustand ) und Endzustand ( An-Zustand ) unterschiedlich definiert werden, wie durch den Satz visueller Zustände ihres Steuerelements definiert. Übergänge werden durch die Transitions-Eigenschaft von VisualStateGroup definiert und in der Regel in XAML definiert. Die meisten Standardsteuerelementvorlagen definieren keine Übergänge, und in diesem Fall erfolgen die Übergänge zwischen Zuständen sofort. Die Änderungen des alten Zustands an der Vorlage werden entfernt, und die Änderungen des neuen Zustands werden angewendet.
Eine VisualTransition verweist entweder auf einen oder zwei benannte visuelle Zustände. Der From-Wert verweist auf den Namen eines Zustands, der dem aktuellen Zustand entspricht. Der To-Wert verweist auf den Namen eines Zustands, der dem neuen Zustand entspricht, der von einem GoToState-Aufruf angefordert wird. Diese Namen stammen aus einem x:Name-Attributzeichenfolgenwert, der als Teil seiner Definition in derselben VisualStateGroup auf einen VisualState angewendet wird. From oderTo sind ein erforderlicher Wert für eine effektive VisualTransition, eine VisualTransition, die keinen dieser Werte enthält oder Werte verwendet, die nicht mit vorhandenen Zuständen übereinstimmen.
Eine VisualTransition kann nur auf einen Von-Zustand , nur auf einen An-Zustand oder auf einen Von - und einen An-Zustand verweisen. Das Auslassen von Von oder To entspricht einem beliebigen Zustand. VisualStateManager verwendet eine Rangfolgenlogik, für die der Übergang angewendet werden soll, wenn sich die visuellen Zustände ändern:
- Wenn eine VisualTransition vorhanden ist, die speziell auf den alten Zustand als From und den neuen Zustand als To verweist, verwenden Sie diesen Übergang.
- Andernfalls verwenden Sie diesen Übergang, wenn eine VisualTransition vorhanden ist, die speziell auf den neuen Zustand als An verweist, aber nicht Von angibt.
- Wenn eine VisualTransition vorhanden ist, die speziell auf den alten Zustand als From verweist, aber nicht An angibt, verwenden Sie diesen Übergang. Wenn keine der oben genannten Punkte zutrifft, wird kein Übergang ausgeführt.
Wenn Sie GoToState aufrufen, um den visuellen Zustand eines Steuerelements zu ändern, führt VisualStateManager die folgenden Aktionen aus:
- Wenn der VisualState , den das Steuerelement vor dem neu angeforderten visuellen Zustand verwendet hat, über ein Storyboard verfügt, wird dieses Storyboard beendet.
- Zwischen diesen Aktionen wird das Storyboard für eine VisualTransition ausgeführt, wenn ein Übergang mit den beiden visuellen Zuständen vorhanden ist und der von GoToState angeforderte benannte visuelle Zustand gültig und ein neuer Zustand ist.
- Wenn visualState als name by stateName über ein Storyboard verfügt, beginnt das Storyboard.
Eine VisualTransition kann einen Storyboardwert , einen GeneratedDuration-Wert oder beides haben. Wenn eine VisualTransition jedoch weder über einen Storyboardwert noch über einen GeneratedDuration-Wert verfügt, bewirkt visualTransition in Bezug auf Animationen nichts, auch wenn Zustände, die von den Werten From und To benannt werden, an einer Zustandsänderung beteiligt sind.
Implizite Übergänge
Sie können eine VisualTransition so definieren, dass sie über eine GeneratedDuration verfügt, aber keine spezifischen Abhängigkeitseigenschaften aufweist, die als Ziel verwendet und animiert werden. Dadurch wird ein impliziter Übergang erstellt. Jede Abhängigkeitseigenschaft, die speziell für animationen im visuellen Zustand "From " oder " To " bestimmt ist und daher unterschiedliche Werte für die Zustandsänderung aufweist, verwendet dann eine generierte Übergangsanimation. Diese generierte Animation übergibt zwischen dem Wert from state und dem To state-Wert einer solchen Eigenschaft mithilfe von Interpolation. Die Animation für den impliziten Übergang dauert für den von GeneratedDuration angegebenen Zeitraum.
Implizite Übergänge gelten nur für Eigenschaften, die ein Double-, Color- oder Point-Wert sind. Anders ausgedrückt: Die -Eigenschaft muss implizit mithilfe von DoubleAnimation, PointAnimation oder ColorAnimation animiert werden können. Wenn Sie eine Übergangsanimation für einen anderen Wert erstellen möchten, z. B. für einen Wert, der ObjectAnimationUsingKeyFrames erfordert, fügen Sie diese Animation in das Storyboard ein, und weisen Sie der Animation eine Dauer zu, die ausgeführt werden soll.
Standardmäßig verwendet eine implizite Übergangsanimation eine lineare Interpolation, um einen Wert über die GeneratedDuration zu animieren. Sie können die lineare Interpolation in ein Interpolationsverhalten Ihrer Wahl ändern, indem Sie Sowohl GeneratedEasingFunction als auch GeneratedDuration für eine VisualTransition festlegen.
Übergangsanimationen
Es gibt ein weiteres Entwurfsmuster und eine API zum Anzeigen visueller Übergänge für eine UWP-App mit C++, C# oder Visual Basic. Dieses Konzept wird als Übergangsanimationen bezeichnet, und die Klasse, die das Verhalten implementiert, ist ein Designübergang oder eine Designanimation. Anstatt Übergänge zwischen visuellen Zuständen desselben Steuerelements zu deklarieren und Änderungen auf Eigenschaften von Steuerelementteilen anzuwenden, wie bei visuellen Zuständen, stellt eine Übergangsanimation Änderungen in der Beziehung zwischen einem vollständigen UI-Element und der gesamten App und Ui dar. Beispielsweise gibt es eine RepositionThemeTransition , die angewendet werden kann, wenn ein UI-Element in den Ui-Koordinatenbereich seines Layoutcontainers verschoben wird. Viele der Übergangsanimationen werden von einer Benutzeraktion initiiert. Eine Übergangsanimation gilt für verschiedene Transition-Eigenschaften von UIElement und bestimmte abgeleitete Klassen, nicht für visualStateGroup. Übergangsanimationen und Designanimationen sind häufig in das Standardverhalten eines Steuerelements integriert. Weitere Informationen finden Sie unter Storyboardanimationen für visuelle Zustände.
Hinweise zu früheren Versionen
Windows 8.x
Für Windows 8 berücksichtigten XAML-Designübergänge und verschiedene andere automatische animierte Verhaltensweisen in der Animationsbibliothek keine bestimmte Microsoft Windows-Einstellung für die erleichterte Bedienung, mit der Benutzer "unnötige Animationen" deaktivieren können.
Beginnend mit Windows 8.1, Designübergängen, Designanimationen und visuellen Übergängen berücksichtigen alle die Einstellung Alle unnötigen Animationen (wenn möglich) deaktivieren in Erleichterte Bedienung. Die Animationen werden nicht ausgeführt, und die Zustandsänderungen oder visuellen Änderungen des Steuerelements erfolgen sofort.
Wenn Sie Ihren App-Code von Windows 8 zu Windows 8.1 migrieren, sollten Sie das Animationsverhalten mit aktivierter Einstellung Alle unnötigen Animationen deaktivieren (sofern möglich) testen. Da einige dieser Animationen durch Storyboards gesteuert werden und Sie manchmal benutzerdefinierte Animationen so verketten, dass sie beginnen, nachdem visuelle Übergänge oder Designanimationen abgeschlossen sind, kann sich die Einstellung Alle unnötigen Animationen deaktivieren (sofern möglich) auf die Zeitdauer Ihrer Animationen auswirken. Wenn Sie etwas als VisualTransition in einem visuellen Zustand und nicht als Storyboardanimation implementiert haben, sollten Sie es in eine echte benutzerdefinierte Animation ändern, damit die Einstellung Alle unnötigen Animationen deaktivieren (wenn möglich) sie nicht deaktiviert.
Apps, die für Windows 8 kompiliert wurden, aber auf Windows 8.1 ausgeführt werden, verwenden weiterhin das Windows 8 Verhalten für Designanimationen und visuelle Übergänge. Designübergänge werden jedoch durch die Einstellung auf Windows 8.1 deaktiviert, auch wenn eine App nicht neu kompiliert wird.
Konstruktoren
VisualTransition() |
Initialisiert eine neue instance der VisualTransition-Klasse. |
Eigenschaften
Dispatcher |
Ruft den CoreDispatcher ab, dem dieses Objekt zugeordnet ist. CoreDispatcher stellt eine Funktion dar, die auf das DependencyObject im UI-Thread zugreifen kann, auch wenn der Code von einem Nicht-UI-Thread initiiert wird. (Geerbt von DependencyObject) |
From |
Ruft den Namen des VisualState ab, von dem übergehen soll, oder legt diesen fest. |
GeneratedDuration |
Ruft die Zeit ab, die benötigt wird, um von einem Zustand in einen anderen zu wechseln, und die Zeit, die implizite Übergangsanimationen als Teil des Übergangsverhaltens ausgeführt werden sollen, oder legt diese fest. |
GeneratedEasingFunction |
Ruft die Beschleunigungsfunktion ab, die auf die generierten Animationen angewendet wird, oder legt sie fest. |
Storyboard |
Ruft das Storyboard ab, das beim Übergang ausgeführt wird, oder legt es fest. |
To |
Ruft den Namen des VisualState-Elements ab, zu dem übergehen soll, oder legt diesen fest. |
Methoden
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) |
GetValue(DependencyProperty) |
Gibt den aktuellen effektiven Wert einer Abhängigkeitseigenschaft aus einem DependencyObject zurück. (Geerbt von DependencyObject) |
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) |
SetValue(DependencyProperty, Object) |
Legt den lokalen Wert einer Abhängigkeitseigenschaft für ein DependencyObject fest. (Geerbt von DependencyObject) |
UnregisterPropertyChangedCallback(DependencyProperty, Int64) |
Bricht eine Änderungsbenachrichtigung ab, die zuvor durch Aufrufen von RegisterPropertyChangedCallback registriert wurde. (Geerbt von DependencyObject) |