2016-04-09 20 views
2

Ich las viele ähnliche q & a, aber ich bekam keine Antwort, die ich suche. Also, ich mache "Hausaufgaben" in Microsoft Bled, ich mag Storyboards und ich weiß, wie man sie mit einem Knopfklick auslöst, aber irgendjemand weiß, wie man eine Animation in C# zum Beispiel im if-Satz startet.WPF-Trigger-Animation von Code

Danke für Antworten und Zeit im Voraus ausgeben!

+0

Du suchst dieses [Thema] (http://stackoverflow.com/questions/3755651/call-a-storyboard-declared-in- xaml-von-c-sharp). Ein anderer Weg wäre 'Storyboard sb = this.FindResource (" Storyboard1 ") als Storyboard; if (sb! = Null) {BeginStoryboard (sb); } ' – Nebelkraehe

+0

Danke, deine Lösung funktioniert :) Kannst du es als Antwort posten? –

+0

Froh, dass es geholfen hat. Natürlich werde ich es als Antwort posten. :-) – Nebelkraehe

Antwort

2

ich bin für diesen thread suchen.


würde einen anderen Weg:

Storyboard sb = this.FindResource("Storyboard1") as Storyboard; 
if (sb != null){ BeginStoryboard(sb); } 
+0

Entschuldigung, weil ich dich hier in einen Kommentar schreibe, aber weißt du vielleicht, dass es möglich ist, die gleiche Animation mit Code wie diesem umzukehren. Zum Beispiel schließen und öffnen Sie die Animation. Danke :) –

+0

Nicht sicher, ob dieser [thread] (http://stackoverflow.com/questions/3389779/using-wpf-storyboard-forward-and-reverse) Ihnen hilft, aber Sie können umgekehrte Storyboards innerhalb der Mischung mit ein paar erstellen Klicks. Werfen Sie einen Blick auf [diese] (https://msdn.microsoft.com/en-us/library/cc294966.aspx). Eine andere Alternative sind 'VisualStates'. – Nebelkraehe

+0

Danke nochmal, ich habe die Animation umgekehrt –

0

Sie können auf Storyboards von Code-Behind zugreifen, indem Sie ihm einen Namen geben und auf diesen Namen verweisen, um die Begin-Methode zu verwenden.

<Canvas MouseLeftButtonDown="Handle_MouseDown" 
    Background="Gray" Width="600" Height="500"> 
    <Canvas.Resources> 
     <Storyboard x:Name="myStoryboard"> 
     <PointAnimation 
      x:Name="myPointAnimation" 
      Storyboard.TargetProperty="Center" 
      Storyboard.TargetName="MyAnimatedEllipseGeometry" 
      Duration="0:0:2"/> 
     </Storyboard> 
    </Canvas.Resources> 

    <Path Fill="Blue"> 
     <Path.Data> 
     <EllipseGeometry x:Name="MyAnimatedEllipseGeometry" 
     Center="200,100" RadiusX="15" RadiusY="15" /> 
     </Path.Data> 
    </Path> 

</Canvas> 

-Code-behind:

private void Handle_MouseDown(object sender, MouseButtonEventArgs e) 
{ 
    // Retrieve current mouse coordinates. 
    double newX = e.GetPosition(null).X; 
    double newY = e.GetPosition(null).Y; 
    Point myPoint = new Point(); 
    myPoint.X = newX; 
    myPoint.Y = newY; 
    myPointAnimation.To = myPoint; 
    myStoryboard.Begin(); 
} 
0
public static class AnimationHelper 
{ 
    private static void AnimateOpacity(DependencyObject target, double from, double to) 
    { 
     var opacityAnimation = new DoubleAnimation 
     { 
      From = from, 
      To = to, 
      Duration = TimeSpan.FromMilliseconds(500) 
     }; 

     Storyboard.SetTarget(opacityAnimation, target); 
     Storyboard.SetTargetProperty(opacityAnimation, "Opacity"); 

     var storyboard = new Storyboard(); 
     storyboard.Children.Add(opacityAnimation); 
     storyboard.Begin(); 
    } 

    /// <summary> 
    /// Fades in the given dependency object. 
    /// </summary> 
    /// <param name="target">The target dependency object to fade in.</param> 
    public static void FadeIn(DependencyObject target) 
    { 
     AnimateOpacity(target, 0, 1); 
    } 
}