2012-03-29 4 views
2

ich Reihe von Schaltflächen mit Effekten haben zu beenden, dass ich Simulieren Klick in Code möchte. Das Problem ist, dass wenn ich "someFunction" starte, die Effekte ungefähr zur gleichen Zeit ausgelöst werden. Ich möchte, dass eine Taste klickt, dann warte, bis der Effekt beendet ist, und fahre mit den anderen Tasten fort. Ich habe versucht, Thread.sleep zu verwenden, aber das funktioniert nicht. Kann mir jemand Hinweise geben, wie dies erreicht werden kann? Ist es auch möglich, das gleichzeitige Klicken mehrerer Tasten zu simulieren?eine Reihe von Button in Code klicken und warten Effekte

Danke für jede Hilfe!

someFunction() { 
    button1.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); 
    //System.Threading.Thread.Sleep(100); doesn't work wait for effect to finish 

    button2.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); 
    //System.Threading.Thread.Sleep(100); doesn't work 

    button3.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); 
    //System.Threading.Thread.Sleep(100); doesn't work 

    button4.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); 
} 

<Button Name="buttonRed" Background="Red" BorderBrush="Black" BorderThickness="1" 
     Grid.Row="1" Grid.Column="0" Click="buttonRedClick"> 
    <Button.BitmapEffect> 
     <BlurBitmapEffect x:Name="redBlur" Radius="0" /> 
    </Button.BitmapEffect> 
    <Button.Triggers> 
     <EventTrigger RoutedEvent="Button.Click"> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation 
         Storyboard.TargetName="redBlur" 
         Storyboard.TargetProperty="Radius" 
         From="0" To="40" Duration="0:0:0.3" 
         AutoReverse="True" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Button.Triggers> 
</Button> 
+0

Verwenden Sie Storyboards? –

+0

Auf welche Art von "Effekten" beziehen Sie sich? Meinst du Storyboard-Aktionen oder ist dies eine Art von C# -Code, der ausgeführt wird, wenn auf die Schaltfläche geklickt wird? – NtscCobalt

+0

Ja, ich verwende Storyboards. – user1299812

Antwort

0

Versuchen Sie, dies zu betrachten article von Laurent Bugnion.

Von oben Artikel:

Beachten Sie, dass es auch möglich ist, die BeginTime Eigenschaft des Animationsobjekt zu verwenden, um eine Animation zu verzögern, zum Beispiel, um Kaskade Animationen. Eine weitere Möglichkeit ist es, das Completed Ereignis zu verwenden, die in dem XAML-Code oder in dem Code-behind eingestellt werden. Dieses Ereignis bedeutet dass das entsprechende Verfahren in dem Code-Behind vorhanden sein muss, damit es ist nicht anwendbar für reine XAML-Anwendungen.

0

Thread.sleep wird nicht funktionieren, da es die sys.val Realisierung definiert, so dass Sie den folgenden Code verwenden:

da der Fehler ist: <EventTrigger RoutedEvent="Button.Click">

stattdessen sollte es sein: <Event.Trigger.Sleep RoutedEvent="Button.Click">