2014-06-26 4 views
1

J'ai besoin d'animer plusieurs propriétés d'un élément d'interface utilisateur en même temps. Par exemple, réduire la largeur et la hauteur des fenêtres de manière synchrone. Par exemple:Animation WPF (modification simultanée de plusieurs propriétés d'un seul élément)

Une idée?

 DoubleAnimation widthAnimation = new DoubleAnimation 
     {   
      To = 0, 
      Duration = TimeSpan.FromSeconds(5) 
     }; 

     DoubleAnimation heightAnimation = new DoubleAnimation 
     { 
      To = 0, 
      Duration = TimeSpan.FromSeconds(5) 
     }; 

     Storyboard.SetTargetProperty(widthAnimation, new PropertyPath(Window.WidthProperty)); 
     Storyboard.SetTarget(widthAnimation, this); 

     Storyboard.SetTargetProperty(heightAnimation, new PropertyPath(Window.HeightProperty)); 
     Storyboard.SetTarget(heightAnimation, this); 

     Storyboard s = new Storyboard(); 
     s.Completed += FadeOut_Completed; 
     s.Children.Add(widthAnimation); 
     s.Children.Add(heightAnimation); 
     this.BeginStoryboard(s, HandoffBehavior.SnapshotAndReplace, true);  

Il fera des animations étape par étape; la hauteur changera après que les changements de largeur soient terminés! : |

+0

Il n'y a rien de mal avec votre code, pourriez-vous poster un échantillon de travail qui peut reproduire le même problème? – pushpraj

+0

c'est le projet exemple https://drive.google.com/file/d/0B9V5dv1Y3m0MQ0pBdXlqQlFjdWs/edit?usp=sharing – Matrix

Répondre

1

Après avoir regardé votre code Je comprends que vous essayez d'animer la largeur et la hauteur de Window simultenousely

Mais je regrette de vous dire que depuis la fenêtre est pas un composant WPF réel, mais une composante de la plate-forme. cependant le contenu de la fenêtre est complètement contrôlable comme prévu via votre code, mais la fenêtre ne l'est pas. De tels changements sont acheminés via Pinvoke. et la question que vous êtes face à un problème connu et le travail autour sont peu complexes

une solution est ici, celui-ci utilise PInvoke pour animer la hauteur de la fenêtre et la largeur

Animating a WPF window width and height

ici est un bug pour problème similaire créé à Microsoft, le résultat est (fermé, comme ne fixerai pas)

https://connect.microsoft.com/VisualStudio/feedback/details/715415/window-width-height-animation-in-wpf-got-broken-on-net-framework-4-0

extraCi-dessous est un exemple qui ne résout pas réellement votre problème mais qui vous aidera à réduire le nombre de lignes dont vous avez besoin pour effectuer ces animations pour d'autres éléments. Il est une ré-écriture de votre code en moins de lignes

 DoubleAnimation anim = new DoubleAnimation 
     { 
      To = 0, 
      Duration = TimeSpan.FromSeconds(5) 
     }; 

     border.BeginAnimation(Border.HeightProperty, anim); 
     border.BeginAnimation(Border.WidthProperty, anim); 

essayer ce code avec tout élément sauf fenêtre, j'ai utilisé une frontière avec un peu de couleur rempli

excuses pour donnant sur le Window dans votre code à première vue

+0

merci beaucoup mon ami, vous aviez raison. J'utilise le conteneur principal de la fenêtre pour animer à la place du problème de fenêtre résolu. Merci encore. – Matrix

Questions connexes