gpt4 book ai didi

wpf - 无法在 WPF 中设置动画后的属性

转载 作者:行者123 更新时间:2023-12-04 21:09:37 26 4
gpt4 key购买 nike

我使用此代码为我的窗口设置动画:

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);

问题是,每当我设置 Left这个窗口的属性(在动画之后),它变得疯狂。

我使用此代码将子窗口对齐到始终居中,但 Left我使用动画的窗口的属性无法正确更改。
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);
}
}

最佳答案

首先,当您设置动画时,您应该始终删除该属性的潜在先前动画:

login.BeginAnimation(Window.LeftProperty, null);
login.BeginAnimation(Window.LeftProperty, da);

如果你不这样做,你会得到内存泄漏,可能还有其他一些不受欢迎的行为。

也是由于 DependencyProperty precedence您不能在具有事件动画的 DependecyProperty 上设置值,在您的动画中就是这种情况,因为它的 FillBehavior设置为 HoldEnd (默认)。同样,您必须先删除动画。

关于wpf - 无法在 WPF 中设置动画后的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3733760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com