gpt4 book ai didi

wpf - 动画结束后关闭 WPF 窗口

转载 作者:行者123 更新时间:2023-12-02 06:32:32 25 4
gpt4 key购买 nike

我正在使用动画使窗口淡出焦点,然后关闭。

但是,关闭事件会在动画之后立即发生。

让窗口在动画结束后关闭的最简单方法是什么?

在下面的代码中,MainWindow 是打开的第二个窗口。在第一个窗口中单击按钮时调用此方法。

private void CloseMethod(object sender, RoutedEventArgs e)
{
MainWindow win = new MainWindow();
win.Show();
DoubleAnimation animation = new DoubleAnimation()
{
From = 1.0,
To = 0.0,
Duration = new Duration(TimeSpan.FromSeconds(2))
};
this.BeginAnimation(Window.OpacityProperty, animation);
this.Close();
}

最佳答案

我接受了 Omar 的回答,但出于学习目的也想指出,如果 Storyboard使用时,Completed 事件可用于在 Storyboard中的动画发生后调用关闭窗口的方法。再加上一个Button.Click方法,这样也能达到预期的效果:

<Button Foreground="Red" ToolTip="Close this window." Click="ShowMainWin">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="EntireWindow"
Storyboard.TargetProperty="Opacity"
From="1.0" To="0.0"
Duration="0:0:0.5"
Completed="CloseMethod"></DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
Close Window</Button>

并且,在代码中,我定义了 "ShowMainWin""CloseMethod"

"ShowMainWin" 在单击按钮时发生,导致第二个窗口立即打开。 Storyboard 中的动画运行,导致第一个窗口逐渐消失。动画完成后,将调用 “CloseMethod”,导致第一个窗口关闭:

private void ShowMainWin(object sender, RoutedEventArgs e)
{
MainWindow win = new MainWindow();
win.Show();
}

public void CloseMethod(object sender, EventArgs e)
{
this.Close();
}

关于wpf - 动画结束后关闭 WPF 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30674485/

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