动画后关闭WPF窗口

Aar*_*mas 2 wpf animation

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

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

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

在下面的代码中,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();
}
Run Code Online (Sandbox Code Playgroud)

Aar*_*mas 5

我接受了Omar的回答,但出于学习目的,我还想指出,如果使用情节提要,则在情节提要Completed的动画发生后,可以使用该事件来调用关闭窗口的方法。结合一种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>
Run Code Online (Sandbox Code Playgroud)

并且,在代码中,我定义了"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();
}
Run Code Online (Sandbox Code Playgroud)