2010-07-07 21 views
0

Je construis un UserControl Silverlight 4 dans Blend qui a trois VisualStates. J'aimerais que les états passent du premier au second état après un délai de quelques secondes, de la deuxième à la troisième après quelques secondes, du troisième au premier après un autre délai, et continuer à tourner comme cela. Essentiellement, il s'agit d'un «ad rotator» très primitif, utilisant des images statiques pour un prototype que je construis. Est-il possible de faire cela en utilisant Blend? Si c'est le cas, comment? Je suis capable d'utiliser les comportements TimerTriggers et ActivateStateAction pour créer la première rotation complète, mais je ne suis pas sûr de savoir comment réinitialiser les minuteurs, ou si une autre approche fonctionnera mieux.Rotation d'états dans un VisualStateManager Blend 4 basé sur des événements de temporisation?

Répondre

0
  1. Nommez le contrôle avec une étiquette x: Name; Je nommé le mien "ControlName"
  2. Déclarez une TimerTrigger:

    <ei:TimerTrigger MillisecondsPerTick="3000"> 
        <ei:CallMethodAction MethodName="NextState" TargetObject="{Binding ElementName=ControlName}"/> 
    </ei:TimerTrigger> 
    
  3. Mettre en oeuvre ce code avec vos états dans le code derrière. Oui. Le code derrière.

    Public Sub NextState()

    Select Case Me.RotateImageStates.CurrentState.Name 
         Case "run1" 
          VisualStateManager.GoToState(Me, "run2", True) 
         Case "run2" 
          VisualStateManager.GoToState(Me, "run3", True) 
         Case "run3" 
          VisualStateManager.GoToState(Me, "run1", True) 
         Case Else 
          VisualStateManager.GoToState(Me, "run1", True) 
        End Select 
    

    End Sub

  4. ...?

  5. Profit!

Nom de la commande avec un x: Name = "UnNom"