J'ai utilisé ce code pour l'animation ma fenêtre:Impossible de définir une propriété après son animation dans WPF
winLogin login = new winLogin();
login.Owner = this;
login.Show();
DoubleAnimation da = new DoubleAnimation();
da.From = 0;
da.To = this.Left + ((this.Width - login.Width)/2);
da.AutoReverse = false;
da.Duration = new Duration(TimeSpan.FromSeconds(0.1));
login.BeginAnimation(Window.LeftProperty, da);
Le problème est que chaque fois que je mets la propriété Left
de cette fenêtre (après l'animation), il devient fou .
J'ai utilisé ce code pour aligner les fenêtres enfants pour qu'elles soient toujours au centre, mais la propriété des fenêtres sur lesquelles j'ai utilisé une animation ne peut pas être modifiée correctement.
private void Window_LocationChanged(object sender, EventArgs e)
{
foreach (Window win in this.OwnedWindows)
{
win.Top = this.Top + ((this.Height - win.Height)/2);
win.Left = this.Left + ((this.Width - win.Width)/2);
}
}
En fait, ne serait-il pas correct de définir la valeur avec SetCurrentValue? NVM, bien sûr l'animation aura toujours la priorité avec HoldEnd. –
Le nouveau .NET 4 DependencyObject.SetCurrentValue est utilisé pour définir la valeur sur DependencyProperties sans affecter la valeur source de la base de données. Votre Window.LeftProperty n'est cependant pas databound. Les animations définissent la propriété directement. – bitbonk