WPF窗口关闭事件使用情况

Ter*_*ary 3 c# wpf events

我有一个Window班级(例如public partial class Foo : Window),当我创建窗口时,我会注册这个Closed事件.

foo = new Foo();
foo.Closed += FooClosed;


public void FooClosed(object sender, System.EventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)

当有人按下foo窗口内的按钮时,我会调用this.Close()FooClosed似乎没有调用.

我错误地报名参加活动了吗?

更新

顺便说一句,我想要完成的就是知道何时foo关闭,所以我可以将参考设置回来null.有没有更好的方法来实现这一目标?

Dan*_*n P 10

几天前回答了问题检查WPF关闭时执行代码

您可能会对代码进行一些处理,因为这对我来说很合适.

MainWindow.xaml.cs

namespace WpfApplication1
{

    public partial class MainWindow : Window
    {
        private Foo foo;

        public MainWindow()
        {
            InitializeComponent();

            foo = new Foo();
            foo.Closed += FooClosed;
            foo.Show();
        }

        public void FooClosed(object sender, System.EventArgs e)
        {
            //This gets fired off
            foo = null;
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

Foo.xaml

<Window x:Class="WpfApplication1.Foo"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Foo" Height="300" Width="300">
    <Grid>
        <Button Click="Button_Click">Close</Button>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

Foo.xaml.cs

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for Foo.xaml
    /// </summary>
    public partial class Foo : Window
    {
        public Foo()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)