2010-08-17 3 views
1

je le rectangle suivant lié à une propriété de positionnement en constante évolution « RectTop »animation XAML à la propriété liée

<Rectangle Canvas.Top="{Binding RectTop}" Height="100" Width="100" Fill="Red" /> 

Est-ce là, je sens que je peux mettre en place une animation/déclencheur pour animer en douceur le rectangle à RectTop chaque fois que cette valeur change? RectTop change constamment. La classe RectTop implémente INotifyPropertyChanged pour que mes mises à jour fonctionnent correctement. J'ai réussi à utiliser un thread intermédiaire qui incrémente lentement RectTop, puis invoque le thread d'interface utilisateur pour notifier son changement de valeur. Cette méthode semble terriblement hackish. Il doit y avoir un meilleur moyen.

Des idées?

Répondre

0

Astuce simple. Mettez à jour la propriété Margin du rectangle au lieu de mettre à jour Canvas.Top.

Au lieu de cela:

<Canvas Width="300" Height="300" Background="Black"> 
    <Rectangle Canvas.Top="10" Fill="Blue" Height="100" Width="100"/> 
    </Canvas> 

Essayez ceci:

<Canvas Width="300" Height="300" Background="Black"> 
    <Rectangle Margin="0,10,0,0" Fill="Blue" Height="100" Width="100"/> 
    </Canvas> 

PS: Vous devez utiliser Thickness Animation

HTH

+1

Merci pour la réponse, que wo rks à mi-chemin. La ligne est cependant un problème. Ce dont j'ai besoin c'est le storyboard à jouer chaque fois que RectTop change. Votre solution ne joue l'animation qu'une seule fois. Je chercherai à avoir un RoutedEvent dans mon ViewModel si c'est possible. – bufferz

+0

Oui, EventTriggers est très pratique. –

Questions connexes