XAML-Eigenschaft eine Storyboard-Animation auf Last zu starten
-
21-09-2019 - |
Frage
Nun, wie der Titel schon sagt:
ich ein Drehbuch haben, und ich will es die Animation ohne das Eingreifen des Codes zu starten. Der Grund für diese Forderung ist, dass ich Silverlight Embedded bin Targeting und ich bin zu faul, jetzt meine Anwendung als auch neu zu kompilieren. Und kommt, daran zu denken, wird es leichter sein, um die Animation zu ändern, nur in der Zukunft.
Does XAML haben eine Eigenschaft, um das Storyboard zum Laufen zu bringen, sobald die XAML Lasten?
Lösung
Sie können das Loaded-Ereignis verwenden, das Storyboard starten
Siehe MSDN für ein Beispiel: Storyboard (Silverlight)
Nahm das Beispiel von MSDN:
<Canvas
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Rectangle
x:Name="MyAnimatedRectangle"
Width="100"
Height="100"
Fill="Blue">
<Rectangle.Triggers>
<!-- Animates the rectangle's opacity.
This is the important part, the EventTrigger which will start our animation -->
<EventTrigger RoutedEvent="Rectangle.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="MyAnimatedRectangle"
Storyboard.TargetProperty="Opacity"
From="1.0" To="0.0" Duration="0:0:5" AutoReverse="True" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Rectangle.Triggers>
</Rectangle>
</Canvas>
Das Objekt Rechteck hat Eigenschaften. In der Triggers-Eigenschaft definiert wir einen Eventtrigger, die feuern, wenn dieses Ereignis eintritt. Wir wählen das Rectangle.Loaded Ereignis, das heißt, es wird Feuer beim Laden;).
Wir fügen eine Begin Eigenschaft unser Drehbuch zu beginnen, und ein Storyboard hinzufügen. Diese Animation wird ein Double auf der Deckkraft-Eigenschaft verwenden, was bedeutet, dass in einer Dauer von 5 Sekunden der Opazität wird allmählich verblasst auf Null, und zurück (Autoreverse-Eigenschaft), und es wird diese immer (die RepeatBehaviour Eigenschaft) tun.
Andere Tipps
<UserControl x:Class="SOSMVVM.AniM11"
xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
xmlns:d='http://schemas.microsoft.com/expression/blend/2008'
xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006'
mc:Ignorable='d'
d:DesignWidth='640'
d:DesignHeight='480'>
<StackPanel Margin="5">
<Rectangle Name="rect3" Fill="Blue" Margin="2" Width="20"
Height="20" HorizontalAlignment="Left" />
<Button Margin="2,20,0,0" HorizontalAlignment="Left"
Content="Start Animations" Width="100">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="rect3" Storyboard.TargetProperty="Width"
From="20" To="400" Duration="0:0:10" SpeedRatio="0.5" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Button.Triggers>
</Button>
</StackPanel>
</UserControl>